| Index: git_cl.py
|
| diff --git a/git_cl.py b/git_cl.py
|
| index a4a160b02beac11ba5c7477d84ca559e558c30f6..467f842f29b6772c72e3f309bc25c7e3f5687534 100755
|
| --- a/git_cl.py
|
| +++ b/git_cl.py
|
| @@ -828,7 +828,7 @@ class ChangeDescription(object):
|
| self.description = self.description.strip('\n') + '\n'
|
| # Retrieves all reviewer lines
|
| regexp = re.compile(r'^\s*(TBR|R)=(.+)$', re.MULTILINE)
|
| - reviewers = ','.join(
|
| + reviewers = ', '.join(
|
| i.group(2).strip() for i in regexp.finditer(self.description))
|
| if reviewers:
|
| self.reviewers = reviewers
|
| @@ -1106,8 +1106,8 @@ def GerritUpload(options, args, cl):
|
| if CHANGE_ID not in log_desc:
|
| AddChangeIdToCommitMessage(options, args)
|
| if options.reviewers:
|
| - log_desc += '\nR=' + options.reviewers
|
| - change_desc = ChangeDescription(log_desc, options.reviewers)
|
| + log_desc += '\nR=' + ', '.join(options.reviewers)
|
| + change_desc = ChangeDescription(log_desc, ', '.join(options.reviewers))
|
| change_desc.ParseDescription()
|
| if change_desc.IsEmpty():
|
| print "Description is empty; aborting."
|
| @@ -1116,12 +1116,13 @@ def GerritUpload(options, args, cl):
|
| receive_options = []
|
| cc = cl.GetCCList().split(',')
|
| if options.cc:
|
| - cc += options.cc.split(',')
|
| + cc.extend(options.cc)
|
| cc = filter(None, cc)
|
| if cc:
|
| receive_options += ['--cc=' + email for email in cc]
|
| if change_desc.reviewers:
|
| - reviewers = filter(None, change_desc.reviewers.split(','))
|
| + reviewers = filter(
|
| + None, (r.strip() for r in change_desc.reviewers.split(',')))
|
| if reviewers:
|
| receive_options += ['--reviewer=' + email for email in reviewers]
|
|
|
| @@ -1159,7 +1160,7 @@ def RietveldUpload(options, args, cl):
|
| if options.title:
|
| upload_args.extend(['--title', options.title])
|
| message = options.title or options.message or CreateDescriptionFromLog(args)
|
| - change_desc = ChangeDescription(message, options.reviewers)
|
| + change_desc = ChangeDescription(message, ','.join(options.reviewers))
|
| if not options.force:
|
| change_desc.Prompt()
|
| change_desc.ParseDescription()
|
| @@ -1170,12 +1171,16 @@ def RietveldUpload(options, args, cl):
|
|
|
| upload_args.extend(['--message', change_desc.description])
|
| if change_desc.reviewers:
|
| - upload_args.extend(['--reviewers', change_desc.reviewers])
|
| + upload_args.extend(
|
| + [
|
| + '--reviewers',
|
| + ','.join(r.strip() for r in change_desc.reviewers.split(',')),
|
| + ])
|
| if options.send_mail:
|
| if not change_desc.reviewers:
|
| DieWithError("Must specify reviewers to send email.")
|
| upload_args.append('--send_mail')
|
| - cc = ','.join(filter(None, (cl.GetCCList(), options.cc)))
|
| + cc = ','.join(filter(None, (cl.GetCCList(), ','.join(options.cc))))
|
| if cc:
|
| upload_args.extend(['--cc', cc])
|
|
|
| @@ -1228,6 +1233,17 @@ def RietveldUpload(options, args, cl):
|
| return 0
|
|
|
|
|
| +def cleanup_list(l):
|
| + """Fixes a list so that comma separated items are put as individual items.
|
| +
|
| + So that "--reviewers joe@c,john@c --reviewers joa@c" results in
|
| + options.reviewers == sorted(['joe@c', 'john@c', 'joa@c']).
|
| + """
|
| + items = sum((i.split(',') for i in l), [])
|
| + stripped_items = (i.strip() for i in items)
|
| + return sorted(filter(None, stripped_items))
|
| +
|
| +
|
| @usage('[args to "git diff"]')
|
| def CMDupload(parser, args):
|
| """upload the current changelist to codereview"""
|
| @@ -1238,8 +1254,10 @@ def CMDupload(parser, args):
|
| parser.add_option('-m', dest='message', help='message for patchset')
|
| parser.add_option('-t', dest='title', help='title for patchset')
|
| parser.add_option('-r', '--reviewers',
|
| + action='append', default=[],
|
| help='reviewer email addresses')
|
| parser.add_option('--cc',
|
| + action='append', default=[],
|
| help='cc email addresses')
|
| parser.add_option('-s', '--send-mail', action='store_true',
|
| help='send email to reviewer immediately')
|
| @@ -1268,6 +1286,9 @@ def CMDupload(parser, args):
|
| if is_dirty_git_tree('upload'):
|
| return 1
|
|
|
| + options.reviewers = cleanup_list(options.reviewers)
|
| + options.cc = cleanup_list(options.cc)
|
| +
|
| cl = Changelist()
|
| if args:
|
| # TODO(ukai): is it ok for gerrit case?
|
| @@ -1291,7 +1312,7 @@ def CMDupload(parser, args):
|
| if not hook_results.should_continue():
|
| return 1
|
| if not options.reviewers and hook_results.reviewers:
|
| - options.reviewers = hook_results.reviewers
|
| + options.reviewers = hook_results.reviewers.split(',')
|
|
|
| if cl.GetIssue():
|
| latest_patchset = cl.GetMostRecentPatchset(cl.GetIssue())
|
|
|