Chromium Code Reviews| Index: git_cl.py |
| diff --git a/git_cl.py b/git_cl.py |
| index 7913e989d0345483b70b65e303a711adcf5365fd..831e3d5e1f4b064817f21d81db92bd054fc9f0f1 100755 |
| --- a/git_cl.py |
| +++ b/git_cl.py |
| @@ -1916,7 +1916,7 @@ class _RietveldChangelistImpl(_ChangelistCodereviewBase): |
| options.tbr_owners, |
| change) |
| if not options.force: |
| - change_desc.prompt() |
| + change_desc.prompt(bug=options.bug) |
| if not change_desc.description: |
| print('Description is empty; aborting.') |
| @@ -2465,7 +2465,7 @@ class _GerritChangelistImpl(_ChangelistCodereviewBase): |
| ask_for_data('Press enter to edit now, Ctrl+C to abort') |
| if not options.force: |
| change_desc = ChangeDescription(message) |
| - change_desc.prompt() |
| + change_desc.prompt(bug=options.bug) |
| message = change_desc.description |
| if not message: |
| DieWithError("Description is empty. Aborting...") |
| @@ -2478,7 +2478,7 @@ class _GerritChangelistImpl(_ChangelistCodereviewBase): |
| change_desc = ChangeDescription( |
| options.message or CreateDescriptionFromLog(args)) |
| if not options.force: |
| - change_desc.prompt() |
| + change_desc.prompt(bug=options.bug) |
| if not change_desc.description: |
| DieWithError("Description is empty. Aborting...") |
| message = change_desc.description |
| @@ -2660,6 +2660,29 @@ def _process_codereview_select_options(parser, options): |
| options.forced_codereview = 'rietveld' |
| +def _get_bug_line_value(prefix, bugs): |
| + """Given prefix and comma separated list of bugs, returns a proper bug line. |
| + |
| + Each bug can be either: |
| + * a number, which is combined with prefix |
| + * string, which is left as is. |
| + |
| + >>> _get_bug_line_value('v8', '123,chromium:789') |
| + 'v8:123,chromium:789' |
|
Sergiy Byelozyorov
2016/07/01 14:41:12
I'd also check if each bug is in '\w+:\d+' format.
tandrii(chromium)
2016/07/01 15:27:04
Acknowledged.
|
| + """ |
| + def to_str(bug): |
| + bug = bug.strip() |
| + if not prefix: |
| + return bug |
| + try: |
| + return '%s:%d' % (prefix, int(bug)) |
| + except ValueError: |
| + return bug |
| + return bug |
|
Sergiy Byelozyorov
2016/07/01 14:41:12
Why is this necessary? You either return inside tr
tandrii(chromium)
2016/07/01 15:27:04
yep, leftover.
|
| + return ','.join(map(to_str, bugs.split(','))) |
|
Sergiy Byelozyorov
2016/07/01 14:41:12
How about ', '.join(...)? Looks nicer for humans,
tandrii(chromium)
2016/07/01 15:27:04
Rietveld doens't care, neither does Gerrit. It's a
|
| + |
| + |
| + |
| class ChangeDescription(object): |
| """Contains a parsed form of the change description.""" |
| R_LINE = r'^[ \t]*(TBR|R)[ \t]*=[ \t]*(.*?)[ \t]*$' |
| @@ -2735,7 +2758,7 @@ class ChangeDescription(object): |
| if new_tbr_line: |
| self.append_footer(new_tbr_line) |
| - def prompt(self): |
| + def prompt(self, bug=None): |
| """Asks the user to update the description.""" |
| self.set_description([ |
| '# Enter a description of the change.', |
| @@ -2747,7 +2770,10 @@ class ChangeDescription(object): |
| regexp = re.compile(self.BUG_LINE) |
| if not any((regexp.match(line) for line in self._description_lines)): |
| - self.append_footer('BUG=%s' % settings.GetBugPrefix()) |
| + prefix = settings.GetBugPrefix() |
| + value = _get_bug_line_value(prefix, bug) if bug else prefix |
| + # TODO(tandrii): change this to 'Bug: xxx' to be a proper Gerrit footer. |
| + self.append_footer('BUG=%s' % value) |
| content = gclient_utils.RunEditor(self.description, True, |
| git_editor=settings.GetGitEditor()) |
| if not content: |
| @@ -3725,6 +3751,9 @@ def CMDupload(parser, args): |
| parser.add_option('-f', action='store_true', dest='force', |
| help="force yes to questions (don't prompt)") |
| parser.add_option('-m', dest='message', help='message for patchset') |
| + parser.add_option('-b', '--bug', |
| + help='pre-populate the bug number(s) for this issue. ' |
| + 'If several, separate with commas') |
| parser.add_option('--message-file', dest='message_file', |
| help='file which contains message for patchset') |
| parser.add_option('-t', dest='title', |