@ -131,8 +131,7 @@ class CheckoutBase(object):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    """ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    raise  NotImplementedError ( ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  apply_patch ( self ,  patches ,  post_processors = None ,  verbose = False , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                  name = None ,  email = None ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  apply_patch ( self ,  patches ,  post_processors = None ,  verbose = False ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    """ Applies a patch and returns the list of modified files. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    This  function  should  throw  patch . UnsupportedPatchFormat  or 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -166,8 +165,7 @@ class RawCheckout(CheckoutBase):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    """ Stubbed out. """ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    pass 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  apply_patch ( self ,  patches ,  post_processors = None ,  verbose = False , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                  name = None ,  email = None ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  apply_patch ( self ,  patches ,  post_processors = None ,  verbose = False ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    """ Ignores svn properties. """ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    post_processors  =  post_processors  or  self . post_processors  or  [ ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    for  p  in  patches : 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -351,8 +349,7 @@ class SvnCheckout(CheckoutBase, SvnMixIn):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				          ( self . project_name ,  self . project_path ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    return  self . _revert ( revision ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  apply_patch ( self ,  patches ,  post_processors = None ,  verbose = False , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                  name = None ,  email = None ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  apply_patch ( self ,  patches ,  post_processors = None ,  verbose = False ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    post_processors  =  post_processors  or  self . post_processors  or  [ ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    for  p  in  patches : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      stdout  =  [ ] 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -556,9 +553,8 @@ class SvnCheckout(CheckoutBase, SvnMixIn):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				class  GitCheckout ( CheckoutBase ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  """ Manages a git checkout. """ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  __init__ ( self ,  root_dir ,  project_name ,  remote_branch ,  git_url , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      commit_user ,  post_processors = None , base_ref = None  ): 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      commit_user ,  post_processors = None  ): 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    super ( GitCheckout ,  self ) . __init__ ( root_dir ,  project_name ,  post_processors ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    self . base_ref  =  base_ref 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    self . git_url  =  git_url 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    self . commit_user  =  commit_user 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    self . remote_branch  =  remote_branch 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -631,11 +627,10 @@ class GitCheckout(CheckoutBase):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    """ Gets the current revision (in unicode) from the local branch. """ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    return  unicode ( self . _check_output_git ( [ ' rev-parse ' ,  ' HEAD ' ] ) . strip ( ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  apply_patch ( self ,  patches ,  post_processors = None ,  verbose = False , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                  name = None ,  email = None ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  apply_patch ( self ,  patches ,  post_processors = None ,  verbose = False ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    """ Applies a patch on  ' working_branch '  and switches to it. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    Also commits  the  changes  on  the  local   branch . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    The changes  remain  staged  on  the  current   branch . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    Ignores  svn  properties  and  raise  an  exception  on  unexpected  ones . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    """ 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -709,22 +704,9 @@ class GitCheckout(CheckoutBase):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				              '   ' . join ( e . cmd ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				              align_stdout ( stdout ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				              align_stdout ( [ getattr ( e ,  ' stdout ' ,  ' ' ) ] ) ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    # Once all the patches are processed and added to the index, commit the 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    # index. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    cmd  =  [ ' commit ' ,  ' -m ' ,  ' Committed patch ' ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  name  and  email : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      cmd  =  [ ' -c ' ,  ' user.email= %s '  %  email ,  ' -c ' ,  ' user.name= %s '  %  name ]  +  cmd 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  verbose : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      cmd . append ( ' --verbose ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    self . _check_call_git ( cmd ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  self . base_ref : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      base_ref  =  self . base_ref 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    else : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      base_ref  =  ' %s / %s '  %  ( self . remote , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                            self . remote_branch  or  self . master_branch ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    found_files  =  self . _check_output_git ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        [ ' diff ' ,  base_ref ,  ' --ignore-submodules ' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         ' --name-only '  ]) . splitlines ( False ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        [ ' diff ' ,  ' --ignore-submodules ' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         ' --name-only ' ,  ' --staged ' ] ) . splitlines ( False ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    assert  sorted ( patches . filenames )  ==  sorted ( found_files ) ,  ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        ' Found extra  %s  locally,  %s  not patched '  %  ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            sorted ( set ( found_files )  -  set ( patches . filenames ) ) , 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -732,13 +714,15 @@ class GitCheckout(CheckoutBase):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  commit ( self ,  commit_message ,  user ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    """ Commits, updates the commit message and pushes. """ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    # TODO(hinoka): CQ no longer uses this, I think its deprecated. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    #               Delete this. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    assert  self . commit_user 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    assert  isinstance ( commit_message ,  unicode ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    current_branch  =  self . _check_output_git ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        [ ' rev-parse ' ,  ' --abbrev-ref ' ,  ' HEAD ' ] ) . strip ( ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    assert  current_branch  ==  self . working_branch 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    commit_cmd  =  [ ' commit ' ,  ' - -amend' ,  ' -  m' ,  commit_message ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    commit_cmd  =  [ ' commit ' ,  ' - m' ,  commit_message ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  user  and  user  !=  self . commit_user : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      # We do not have the first or last name of the user, grab the username 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      # from the email and call it the original author's name. 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -826,8 +810,7 @@ class ReadOnlyCheckout(object):
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  get_settings ( self ,  key ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    return  self . checkout . get_settings ( key ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  apply_patch ( self ,  patches ,  post_processors = None ,  verbose = False , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                  name = None ,  email = None ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  def  apply_patch ( self ,  patches ,  post_processors = None ,  verbose = False ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    return  self . checkout . apply_patch ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        patches ,  post_processors  or  self . post_processors ,  verbose )