diff --git a/docs/internal-fs-layout.md b/docs/internal-fs-layout.md index 0093e870..8e62cde2 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 e0e9b7fe..06606fa6 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 91bec6f8..633ddc81 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',