diff options
| author | Romaric Jodin <rjodin@google.com> | 2026-10-29 08:52:04 +0100 |
|---|---|---|
| committer | gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com <gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2026-11-03 00:10:19 -0800 |
| commit | 365629015667e04739f59070e745548a728549c8 (patch) | |
| tree | dc4fee64bdec9157fe232c5689a3763fbcb70057 /subcmds/upload.py | |
| parent | b90c7cd8f9e14418c4a486f424fc9afc84d3ff18 (diff) | |
| download | git-repo-2.72.tar.gz | |
When uploading a branch that merges another remote-tracking branch (such
as an upstream branch into the destination branch), ReviewableBranch
only excludes the destination tracking branch (^base). As a result, git
rev-list walks the merged parent and counts all merged commits even
though they already exist on a remote branch, triggering the unusual
commit count warning in _VerifyPendingCommits.
Add --ignore-remote-commits to `repo upload` to pass --not --remotes to
git rev-list in ReviewableBranch so commits already reachable from
refs/remotes/* are excluded from the pending commit list.
Test: ./run_tests tests/test_project.py tests/test_subcmds_upload.py
Change-Id: Ib1fb864982729e20a621144580fe95daa478eaee
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/651284
Tested-by: Romaric Jodin <rjodin@google.com>
Reviewed-by: Brian Gan <brgan@google.com>
Commit-Queue: Romaric Jodin <rjodin@google.com>
Diffstat (limited to 'subcmds/upload.py')
| -rw-r--r-- | subcmds/upload.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/subcmds/upload.py b/subcmds/upload.py index bb4390d22..248486979 100644 --- a/subcmds/upload.py +++ b/subcmds/upload.py | |||
| @@ -370,6 +370,12 @@ Gerrit Code Review: https://www.gerritcodereview.com/ | |||
| 370 | help="always ask about untracked files in the working copy", | 370 | help="always ask about untracked files in the working copy", |
| 371 | ) | 371 | ) |
| 372 | p.add_option( | 372 | p.add_option( |
| 373 | "--ignore-remote-commits", | ||
| 374 | action="store_true", | ||
| 375 | default=False, | ||
| 376 | help="ignore commits already in remote branches", | ||
| 377 | ) | ||
| 378 | p.add_option( | ||
| 373 | "--no-cert-checks", | 379 | "--no-cert-checks", |
| 374 | dest="validate_certs", | 380 | dest="validate_certs", |
| 375 | action="store_false", | 381 | action="store_false", |
| @@ -738,10 +744,14 @@ Gerrit Code Review: https://www.gerritcodereview.com/ | |||
| 738 | cbr = None | 744 | cbr = None |
| 739 | if opt.current_branch: | 745 | if opt.current_branch: |
| 740 | cbr = project.CurrentBranch | 746 | cbr = project.CurrentBranch |
| 741 | up_branch = project.GetUploadableBranch(cbr) | 747 | up_branch = project.GetUploadableBranch( |
| 748 | cbr, ignore_remote_commits=opt.ignore_remote_commits | ||
| 749 | ) | ||
| 742 | avail = [up_branch] if up_branch else None | 750 | avail = [up_branch] if up_branch else None |
| 743 | else: | 751 | else: |
| 744 | avail = project.GetUploadableBranches(opt.branch) | 752 | avail = project.GetUploadableBranches( |
| 753 | opt.branch, ignore_remote_commits=opt.ignore_remote_commits | ||
| 754 | ) | ||
| 745 | return (project_idx, avail, cbr) | 755 | return (project_idx, avail, cbr) |
| 746 | 756 | ||
| 747 | def ValidateOptions(self, opt: optparse.Values, args: List[str]) -> None: | 757 | def ValidateOptions(self, opt: optparse.Values, args: List[str]) -> None: |
