From 84685ba1875db265051cdd043d5dba768c7c42e5 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 19 Feb 2020 02:22:22 -0500 Subject: [PATCH] upload: add support for setting hashtags This allows users to specify custom hashtags when uploading, both via the CLI and via the same gitconfig settings as other upload options. Bug: https://crbug.com/gerrit/11174 Change-Id: Ia0959e25b463e5f29d704e4d06e0de793d4fc77c Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255855 Reviewed-by: David Pursehouse Tested-by: Mike Frysinger --- docs/internal-fs-layout.md | 1 + project.py | 4 ++++ subcmds/upload.py | 24 ++++++++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/docs/internal-fs-layout.md b/docs/internal-fs-layout.md index 0093e87..8e62cde 100644 --- a/docs/internal-fs-layout.md +++ b/docs/internal-fs-layout.md @@ -172,6 +172,7 @@ The `[branch]` settings are updated by `repo start` and `git branch`. | review.\.autocopy | upload | Automatically add to `--cc=` | | review.\.autoreviewer | upload | Automatically add to `--reviewers=` | | review.\.autoupload | upload | Automatically answer "yes" or "no" to all prompts | +| review.\.uploadhashtags | upload | Automatically add to `--hashtags=` | | review.\.uploadtopic | upload | Default [topic] to use | | review.\.username | upload | Override username with `ssh://` review URIs | | remote.\.fetch | sync | Set of refs to fetch | diff --git a/project.py b/project.py index e0e9b7f..06606fa 100644 --- a/project.py +++ b/project.py @@ -199,6 +199,7 @@ class ReviewableBranch(object): def UploadForReview(self, people, auto_topic=False, + hashtags=(), draft=False, private=False, notify=None, @@ -209,6 +210,7 @@ class ReviewableBranch(object): self.project.UploadForReview(self.name, people, auto_topic=auto_topic, + hashtags=hashtags, draft=draft, private=private, notify=notify, @@ -1331,6 +1333,7 @@ class Project(object): def UploadForReview(self, branch=None, people=([], []), auto_topic=False, + hashtags=(), draft=False, private=False, notify=None, @@ -1388,6 +1391,7 @@ class Project(object): opts = [] if auto_topic: opts += ['topic=' + branch.name] + opts += ['t=%s' % p for p in hashtags] opts += ['r=%s' % p for p in people[0]] opts += ['cc=%s' % p for p in people[1]] diff --git a/subcmds/upload.py b/subcmds/upload.py index 91bec6f..633ddc8 100644 --- a/subcmds/upload.py +++ b/subcmds/upload.py @@ -130,6 +130,12 @@ is set to "true" then repo will assume you always want the equivalent of the -t option to the repo command. If unset or set to "false" then repo will make use of only the command line option. +review.URL.uploadhashtags: + +To add hashtags whenever uploading a commit, you can set a per-project +or global Git option to do so. The value of review.URL.uploadhashtags +will be used as comma delimited hashtags like the --hashtags option. + # References Gerrit Code Review: https://www.gerritcodereview.com/ @@ -140,6 +146,9 @@ Gerrit Code Review: https://www.gerritcodereview.com/ p.add_option('-t', dest='auto_topic', action='store_true', help='Send local branch name to Gerrit Code Review') + p.add_option('--hashtag', '--ht', + dest='hashtags', action='append', default=[], + help='Add hashtags (comma delimited) to the review.') p.add_option('--re', '--reviewers', type='string', action='append', dest='reviewers', help='Request reviews from these people.') @@ -384,6 +393,20 @@ Gerrit Code Review: https://www.gerritcodereview.com/ key = 'review.%s.uploadtopic' % branch.project.remote.review opt.auto_topic = branch.project.config.GetBoolean(key) + # Check if hashtags should be included. + def _ExpandHashtag(value): + """Split |value| up into comma delimited tags.""" + if not value: + return + for tag in value.split(','): + tag = tag.strip() + if tag: + yield tag + key = 'review.%s.uploadhashtags' % branch.project.remote.review + hashtags = set(_ExpandHashtag(branch.project.config.GetString(key))) + for tag in opt.hashtags: + hashtags.update(_ExpandHashtag(tag)) + destination = opt.dest_branch or branch.project.dest_branch # Make sure our local branch is not setup to track a different remote branch @@ -401,6 +424,7 @@ Gerrit Code Review: https://www.gerritcodereview.com/ branch.UploadForReview(people, auto_topic=opt.auto_topic, + hashtags=hashtags, draft=opt.draft, private=opt.private, notify=None if opt.notify else 'NONE',