summaryrefslogtreecommitdiffstats
path: root/subcmds
diff options
context:
space:
mode:
authorRomaric Jodin <rjodin@google.com>2026-10-29 08:52:04 +0100
committergerrit-scoped@luci-project-accounts.iam.gserviceaccount.com <gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com>2026-11-03 00:10:19 -0800
commit365629015667e04739f59070e745548a728549c8 (patch)
treedc4fee64bdec9157fe232c5689a3763fbcb70057 /subcmds
parentb90c7cd8f9e14418c4a486f424fc9afc84d3ff18 (diff)
downloadgit-repo-2.72.tar.gz
upload: add --ignore-remote-commitsv2.72stable
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')
-rw-r--r--subcmds/upload.py14
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: