@ -1608,11 +1608,11 @@ class Changelist(object):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      self . SetWatchers ( watchlist . GetWatchersForPaths ( files ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  not  options . bypass_hooks : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      if  options . reviewers  or  options . tbr_owners : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      if  options . reviewers  or  options . add_owners_to : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        # Set the reviewer list now so that presubmit checks can access it. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        change_description  =  ChangeDescription ( change . FullDescriptionText ( ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        change_description . update_reviewers ( options . reviewers , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                                            options . tbr_owners , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                                            options . add_owners_to , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                                            change ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        change . SetDescriptionText ( change_description . description ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      hook_results  =  self . RunHook ( committing = False , 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -2216,9 +2216,9 @@ class _RietveldChangelistImpl(_ChangelistCodereviewBase):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  options . title : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				          message  =  options . title  +  ' \n \n '  +  message 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      change_desc  =  ChangeDescription ( message ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      if  options . reviewers  or  options . tbr_owners : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      if  options . reviewers  or  options . add_owners_to : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        change_desc . update_reviewers ( options . reviewers , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                                     options . tbr_owners , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                                     options . add_owners_to , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                                     change ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      if  not  options . force : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        change_desc . prompt ( bug = options . bug ,  git_footer = False ) 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -2927,8 +2927,8 @@ class _GerritChangelistImpl(_ChangelistCodereviewBase):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            ' single commit. ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      confirm_or_exit ( action = ' upload ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  options . reviewers  or  options . tbr_owners : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      change_desc . update_reviewers ( options . reviewers ,  options . tbr_owners , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  options . reviewers  or  options . add_owners_to : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      change_desc . update_reviewers ( options . reviewers ,  options . add_owners_to , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                                   change ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    # Extra options that can be specified at push time. Doc: 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -3247,10 +3247,11 @@ class ChangeDescription(object):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      lines . pop ( - 1 ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    self . _description_lines  =  lines 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  update_reviewers ( self ,  reviewers ,  add_owners_t br= Fals  e,  change = None ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  update_reviewers ( self ,  reviewers ,  add_owners_t o= Non  e,  change = None ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    """ Rewrites the R=/TBR= line(s) as a single line each. """ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    assert  isinstance ( reviewers ,  list ) ,  reviewers 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  not  reviewers  and  not  add_owners_tbr : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    assert  add_owners_to  in  ( None ,  ' TBR ' ,  ' R ' ) ,  add_owners_to 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  not  reviewers  and  not  add_owners_to : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      return 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    reviewers  =  reviewers [ : ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -3275,14 +3276,19 @@ class ChangeDescription(object):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    for  name  in  r_names : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      if  name  not  in  reviewers : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        reviewers . append ( name ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  add_owners_t br : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  add_owners_t o : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      owners_db  =  owners . Database ( change . RepositoryRoot ( ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                                  fopen = file ,  os_path = os . path ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      all_reviewers  =  set ( tbr_names  +  reviewers ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      missing_files  =  owners_db . files_not_covered_by ( change . LocalPaths ( ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                                                     all_reviewers ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      tbr_names . extend ( owners_db . reviewers_for ( missing_files , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                                               change . author_email ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      names  =  owners_db . reviewers_for ( missing_files ,  change . author_email ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        ' TBR ' :  tbr_names , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        ' R ' :  reviewers , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      } [ add_owners_to ] . extend ( names ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    new_r_line  =  ' R= '  +  ' ,  ' . join ( reviewers )  if  reviewers  else  None 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    new_tbr_line  =  ' TBR= '  +  ' ,  ' . join ( tbr_names )  if  tbr_names  else  None 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -4733,8 +4739,10 @@ def CMDupload(parser, args):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                    help = ' Topic to specify when uploading (Gerrit only) ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  parser . add_option ( ' --email ' ,  default = None , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                    help = ' email address to use to connect to Rietveld ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  parser . add_option ( ' --tbr-owners ' ,  dest = ' tbr_owners ' ,  action = ' store_true ' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                    help = ' add a set of OWNERS to TBR ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  parser . add_option ( ' --tbr-owners ' ,  dest = ' add_owners_to ' ,  action = ' store_const ' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                    const = ' TBR ' ,  help = ' add a set of OWNERS to TBR ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  parser . add_option ( ' --r-owners ' ,  dest = ' add_owners_to ' ,  action = ' store_const ' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                    const = ' R ' ,  help = ' add a set of OWNERS to R ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  parser . add_option ( ' -d ' ,  ' --cq-dry-run ' ,  dest = ' cq_dry_run ' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                    action = ' store_true ' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                    help = ' Send the patchset to do a CQ dry run right after  '