@ -828,7 +828,7 @@ class ChangeDescription(object):
self . description = self . description . strip ( ' \n ' ) + ' \n '
self . description = self . description . strip ( ' \n ' ) + ' \n '
# Retrieves all reviewer lines
# Retrieves all reviewer lines
regexp = re . compile ( r ' ^ \ s*(TBR|R)=(.+)$ ' , re . MULTILINE )
regexp = re . compile ( r ' ^ \ s*(TBR|R)=(.+)$ ' , re . MULTILINE )
reviewers = ' , ' . join (
reviewers = ' , ' . join (
i . group ( 2 ) . strip ( ) for i in regexp . finditer ( self . description ) )
i . group ( 2 ) . strip ( ) for i in regexp . finditer ( self . description ) )
if reviewers :
if reviewers :
self . reviewers = reviewers
self . reviewers = reviewers
@ -1106,8 +1106,8 @@ def GerritUpload(options, args, cl):
if CHANGE_ID not in log_desc :
if CHANGE_ID not in log_desc :
AddChangeIdToCommitMessage ( options , args )
AddChangeIdToCommitMessage ( options , args )
if options . reviewers :
if options . reviewers :
log_desc + = ' \n R= ' + options . reviewers
log_desc + = ' \n R= ' + ' , ' . join ( options . reviewers )
change_desc = ChangeDescription ( log_desc , options . reviewers )
change_desc = ChangeDescription ( log_desc , ' , ' . join ( options . reviewers ) )
change_desc . ParseDescription ( )
change_desc . ParseDescription ( )
if change_desc . IsEmpty ( ) :
if change_desc . IsEmpty ( ) :
print " Description is empty; aborting. "
print " Description is empty; aborting. "
@ -1116,12 +1116,13 @@ def GerritUpload(options, args, cl):
receive_options = [ ]
receive_options = [ ]
cc = cl . GetCCList ( ) . split ( ' , ' )
cc = cl . GetCCList ( ) . split ( ' , ' )
if options . cc :
if options . cc :
cc + = options . cc . split ( ' , ' )
cc . extend ( options . cc )
cc = filter ( None , cc )
cc = filter ( None , cc )
if cc :
if cc :
receive_options + = [ ' --cc= ' + email for email in cc ]
receive_options + = [ ' --cc= ' + email for email in cc ]
if change_desc . reviewers :
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 :
if reviewers :
receive_options + = [ ' --reviewer= ' + email for email in reviewers ]
receive_options + = [ ' --reviewer= ' + email for email in reviewers ]
@ -1159,7 +1160,7 @@ def RietveldUpload(options, args, cl):
if options . title :
if options . title :
upload_args . extend ( [ ' --title ' , options . title ] )
upload_args . extend ( [ ' --title ' , options . title ] )
message = options . title or options . message or CreateDescriptionFromLog ( args )
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 :
if not options . force :
change_desc . Prompt ( )
change_desc . Prompt ( )
change_desc . ParseDescription ( )
change_desc . ParseDescription ( )
@ -1170,12 +1171,16 @@ def RietveldUpload(options, args, cl):
upload_args . extend ( [ ' --message ' , change_desc . description ] )
upload_args . extend ( [ ' --message ' , change_desc . description ] )
if change_desc . reviewers :
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 options . send_mail :
if not change_desc . reviewers :
if not change_desc . reviewers :
DieWithError ( " Must specify reviewers to send email. " )
DieWithError ( " Must specify reviewers to send email. " )
upload_args . append ( ' --send_mail ' )
upload_args . append ( ' --send_mail ' )
cc = ' , ' . join ( filter ( None , ( cl . GetCCList ( ) , options . cc ) ) )
cc = ' , ' . join ( filter ( None , ( cl . GetCCList ( ) , ' , ' . join ( options . cc ) ) ) )
if cc :
if cc :
upload_args . extend ( [ ' --cc ' , cc ] )
upload_args . extend ( [ ' --cc ' , cc ] )
@ -1228,6 +1233,17 @@ def RietveldUpload(options, args, cl):
return 0
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 " ] ' )
@usage ( ' [args to " git diff " ] ' )
def CMDupload ( parser , args ) :
def CMDupload ( parser , args ) :
""" upload the current changelist to codereview """
""" 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 ( ' -m ' , dest = ' message ' , help = ' message for patchset ' )
parser . add_option ( ' -t ' , dest = ' title ' , help = ' title for patchset ' )
parser . add_option ( ' -t ' , dest = ' title ' , help = ' title for patchset ' )
parser . add_option ( ' -r ' , ' --reviewers ' ,
parser . add_option ( ' -r ' , ' --reviewers ' ,
action = ' append ' , default = [ ] ,
help = ' reviewer email addresses ' )
help = ' reviewer email addresses ' )
parser . add_option ( ' --cc ' ,
parser . add_option ( ' --cc ' ,
action = ' append ' , default = [ ] ,
help = ' cc email addresses ' )
help = ' cc email addresses ' )
parser . add_option ( ' -s ' , ' --send-mail ' , action = ' store_true ' ,
parser . add_option ( ' -s ' , ' --send-mail ' , action = ' store_true ' ,
help = ' send email to reviewer immediately ' )
help = ' send email to reviewer immediately ' )
@ -1268,6 +1286,9 @@ def CMDupload(parser, args):
if is_dirty_git_tree ( ' upload ' ) :
if is_dirty_git_tree ( ' upload ' ) :
return 1
return 1
options . reviewers = cleanup_list ( options . reviewers )
options . cc = cleanup_list ( options . cc )
cl = Changelist ( )
cl = Changelist ( )
if args :
if args :
# TODO(ukai): is it ok for gerrit case?
# TODO(ukai): is it ok for gerrit case?
@ -1291,7 +1312,7 @@ def CMDupload(parser, args):
if not hook_results . should_continue ( ) :
if not hook_results . should_continue ( ) :
return 1
return 1
if not options . reviewers and hook_results . reviewers :
if not options . reviewers and hook_results . reviewers :
options . reviewers = hook_results . reviewers
options . reviewers = hook_results . reviewers . split ( ' , ' )
if cl . GetIssue ( ) :
if cl . GetIssue ( ) :
latest_patchset = cl . GetMostRecentPatchset ( cl . GetIssue ( ) )
latest_patchset = cl . GetMostRecentPatchset ( cl . GetIssue ( ) )