From 87f52f308c48c11a99cefcc308a0994abeb2a7ff Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sun, 30 Jun 2024 20:12:07 -0400 Subject: [PATCH] upload: add a --topic option for setting topic explicitly Let people specify the exact topic when uploading CLs. The existing -t option only supports setting the topic to the current local branch. Add a --topic-branch long option to the existing -t to align it a bit better with --hashtag & --hashtag-branch. Change-Id: I010abc4a7f3c685021cae776dd1e597c22b79135 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/431997 Tested-by: Mike Frysinger Reviewed-by: Gavin Mak Commit-Queue: Mike Frysinger --- man/repo-upload.1 | 9 ++++++--- project.py | 10 +++++----- subcmds/upload.py | 18 +++++++++++++----- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/man/repo-upload.1 b/man/repo-upload.1 index bb11dfa3..c0ae5816 100644 --- a/man/repo-upload.1 +++ b/man/repo-upload.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man. -.TH REPO "1" "April 2024" "repo upload" "Repo Manual" +.TH REPO "1" "June 2024" "repo upload" "Repo Manual" .SH NAME repo \- repo upload - manual page for repo upload .SH SYNOPSIS @@ -18,8 +18,11 @@ show this help message and exit number of jobs to run in parallel (default: based on number of CPU cores) .TP -\fB\-t\fR -send local branch name to Gerrit Code Review +\fB\-t\fR, \fB\-\-topic\-branch\fR +set the topic to the local branch name +.TP +\fB\-\-topic\fR=\fI\,TOPIC\/\fR +set topic for the change .TP \fB\-\-hashtag\fR=\fI\,HASHTAGS\/\fR, \fB\-\-ht\fR=\fI\,HASHTAGS\/\fR add hashtags (comma delimited) to the review diff --git a/project.py b/project.py index 80a6c395..edf0723b 100644 --- a/project.py +++ b/project.py @@ -257,7 +257,7 @@ class ReviewableBranch: self, people, dryrun=False, - auto_topic=False, + topic=None, hashtags=(), labels=(), private=False, @@ -273,7 +273,7 @@ class ReviewableBranch: branch=self.name, people=people, dryrun=dryrun, - auto_topic=auto_topic, + topic=topic, hashtags=hashtags, labels=labels, private=private, @@ -1104,7 +1104,7 @@ class Project: branch=None, people=([], []), dryrun=False, - auto_topic=False, + topic=None, hashtags=(), labels=(), private=False, @@ -1180,8 +1180,8 @@ class Project: ref_spec = f"{R_HEADS + branch.name}:refs/for/{dest_branch}" opts = [] - if auto_topic: - opts += ["topic=" + branch.name] + if topic is not None: + opts += [f"topic={topic}"] opts += ["t=%s" % p for p in hashtags] # NB: No need to encode labels as they've been validated above. opts += ["l=%s" % p for p in labels] diff --git a/subcmds/upload.py b/subcmds/upload.py index 5b8c1a20..8039a1cd 100644 --- a/subcmds/upload.py +++ b/subcmds/upload.py @@ -218,9 +218,14 @@ Gerrit Code Review: https://www.gerritcodereview.com/ def _Options(self, p): p.add_option( "-t", + "--topic-branch", dest="auto_topic", action="store_true", - help="send local branch name to Gerrit Code Review", + help="set the topic to the local branch name", + ) + p.add_option( + "--topic", + help="set topic for the change", ) p.add_option( "--hashtag", @@ -551,9 +556,12 @@ Gerrit Code Review: https://www.gerritcodereview.com/ # Check if topic branches should be sent to the server during # upload. - if opt.auto_topic is not True: - key = "review.%s.uploadtopic" % branch.project.remote.review - opt.auto_topic = branch.project.config.GetBoolean(key) + if opt.topic is None: + if opt.auto_topic is not True: + key = "review.%s.uploadtopic" % branch.project.remote.review + opt.auto_topic = branch.project.config.GetBoolean(key) + if opt.auto_topic: + opt.topic = branch.name def _ExpandCommaList(value): """Split |value| up into comma delimited entries.""" @@ -620,7 +628,7 @@ Gerrit Code Review: https://www.gerritcodereview.com/ branch.UploadForReview( people, dryrun=opt.dryrun, - auto_topic=opt.auto_topic, + topic=opt.topic, hashtags=hashtags, labels=labels, private=opt.private,