@ -1510,6 +1510,92 @@ def CMDtree(parser, args):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  return  0 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				def  CMDtry ( parser ,  args ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  """ Triggers a try job through Rietveld. """ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  group  =  optparse . OptionGroup ( parser ,  " Try job options " ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  group . add_option ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      " -b " ,  " --bot " ,  action = " append " , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      help = ( " IMPORTANT: specify ONE builder per --bot flag. Use it multiple  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            " times to specify multiple builders. ex:  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            " ' -bwin_rel:ui_tests,webkit_unit_tests -bwin_layout ' . See  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            " the try server waterfall for the builders name and the tests  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            " available. Can also be used to specify gtest_filter, e.g.  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            " -bwin_rel:base_unittests:ValuesTest.*Value " ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  group . add_option ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      " -r " ,  " --revision " , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      help = " Revision to use for the try job; default: the  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           " revision will be determined by the try server; see  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           " its waterfall for more info " ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  group . add_option ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      " -c " ,  " --clobber " ,  action = " store_true " ,  default = False , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      help = " Force a clobber before building; e.g. don ' t do an  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           " incremental build " ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  group . add_option ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      " --project " , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      help = " Override which project to use. Projects are defined  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           " server-side to define what default bot set to use " ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  group . add_option ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      " -t " ,  " --testfilter " ,  action = " append " ,  default = [ ] , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      help = ( " Apply a testfilter to all the selected builders. Unless the  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            " builders configurations are similar, use multiple  " 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            " --bot <builder>:<test> arguments. " ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  group . add_option ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      " -n " ,  " --name " ,  help = " Try job name; default to current branch name " ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  parser . add_option_group ( group ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  options ,  args  =  parser . parse_args ( args ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  if  args : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    parser . error ( ' Unknown arguments:  %s '  %  args ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  cl  =  Changelist ( ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  if  not  cl . GetIssue ( ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    parser . error ( ' Need to upload first ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  if  not  options . name : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    options . name  =  cl . GetBranch ( ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  # Process --bot and --testfilter. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  if  not  options . bot : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    # Get try slaves from PRESUBMIT.py files if not specified. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    change  =  cl . GetChange ( cl . GetUpstreamBranch ( ) ,  None ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    options . bot  =  presubmit_support . DoGetTrySlaves ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        change , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        change . LocalPaths ( ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        settings . GetRoot ( ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        None , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        None , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        options . verbose , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        sys . stdout ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  if  not  options . bot : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    parser . error ( ' No default try builder to try, use --bot ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  builders_and_tests  =  { } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  for  bot  in  options . bot : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  ' : '  in  bot : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      builder ,  tests  =  bot . split ( ' : ' ,  1 ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      builders_and_tests . setdefault ( builder ,  [ ] ) . extend ( tests . split ( ' , ' ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    elif  ' , '  in  bot : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      parser . error ( ' Specify one bot per --bot flag ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    else : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      builders_and_tests . setdefault ( bot ,  [ ] ) . append ( ' defaulttests ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  if  options . testfilter : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    forced_tests  =  sum ( ( t . split ( ' , ' )  for  t  in  options . testfilter ) ,  [ ] ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    builders_and_tests  =  dict ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      ( b ,  forced_tests )  for  b ,  t  in  builders_and_tests . iteritems ( ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      if  t  !=  [ ' compile ' ] ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  patchset  =  cl . GetPatchset ( ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  if  not  cl . GetPatchset ( ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    properties  =  cl . RpcServer ( ) . get_issue_properties ( cl . GetIssue ( ) ,  False ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    patchset  =  properties [ ' patchsets ' ] [ - 1 ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  cl . RpcServer ( ) . trigger_try_jobs ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      cl . GetIssue ( ) ,  patchset ,  options . name ,  options . clobber ,  options . revision , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      builders_and_tests ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  return  0 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				@usage ( ' [new upstream branch] ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				def  CMDupstream ( parser ,  args ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  """ prints or sets the name of the upstream branch, if any """