@ -127,10 +127,14 @@ class RawCheckout(CheckoutBase):
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            with  open ( os . path . join ( filename ) ,  ' wb ' )  as  f : 
 
					 
					 
					 
					            with  open ( os . path . join ( filename ) ,  ' wb ' )  as  f : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					              f . write ( p . get ( ) ) 
 
					 
					 
					 
					              f . write ( p . get ( ) ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					          else : 
 
					 
					 
					 
					          else : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            stdout  =  subprocess2 . check_output ( 
 
					 
					 
					 
					            if  p . diff_hunks : 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                [ ' patch ' ,  ' -p %s '  %  p . patchlevel ] , 
 
					 
					 
					 
					              stdout  =  subprocess2 . check_output ( 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                stdin = p . get ( ) , 
 
					 
					 
					 
					                  [ ' patch ' ,  ' -p %s '  %  p . patchlevel ] , 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                cwd = self . project_path ) 
 
					 
					 
					 
					                  stdin = p . get ( ) , 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                  cwd = self . project_path ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            elif  p . is_new : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					              # There is only a header. Just create the file. 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					              open ( os . path . join ( self . project_path ,  p . filename ) ,  ' w ' ) . close ( ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  post  in  post_processor : 
 
					 
					 
					 
					        for  post  in  post_processor : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					          post ( self ,  p ) 
 
					 
					 
					 
					          post ( self ,  p ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      except  OSError ,  e : 
 
					 
					 
					 
					      except  OSError ,  e : 
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -258,8 +262,6 @@ class SvnCheckout(CheckoutBase, SvnMixIn):
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					          stdout  + =  self . _check_output_svn ( 
 
					 
					 
					 
					          stdout  + =  self . _check_output_svn ( 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					              [ ' delete ' ,  p . filename ,  ' --force ' ] ,  credentials = False ) 
 
					 
					 
					 
					              [ ' delete ' ,  p . filename ,  ' --force ' ] ,  credentials = False ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else : 
 
					 
					 
					 
					        else : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					          new  =  not  os . path . exists ( p . filename ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					          # svn add while creating directories otherwise svn add on the 
 
					 
					 
					 
					          # svn add while creating directories otherwise svn add on the 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					          # contained files will silently fail. 
 
					 
					 
					 
					          # contained files will silently fail. 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					          # First, find the root directory that exists. 
 
					 
					 
					 
					          # First, find the root directory that exists. 
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -278,10 +280,14 @@ class SvnCheckout(CheckoutBase, SvnMixIn):
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            with  open ( os . path . join ( self . project_path ,  p . filename ) ,  ' wb ' )  as  f : 
 
					 
					 
					 
					            with  open ( os . path . join ( self . project_path ,  p . filename ) ,  ' wb ' )  as  f : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					              f . write ( p . get ( ) ) 
 
					 
					 
					 
					              f . write ( p . get ( ) ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					          else : 
 
					 
					 
					 
					          else : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            cmd  =  [ ' patch ' ,  ' -p %s '  %  p . patchlevel ,  ' --forward ' ,  ' --force ' ] 
 
					 
					 
					 
					            if  p . diff_hunks : 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					            stdout  + =  subprocess2 . check_output ( 
 
					 
					 
					 
					              cmd  =  [ ' patch ' ,  ' -p %s '  %  p . patchlevel ,  ' --forward ' ,  ' --force ' ] 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                cmd ,  stdin = p . get ( ) ,  cwd = self . project_path ) 
 
					 
					 
					 
					              stdout  + =  subprocess2 . check_output ( 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					          if  new : 
 
					 
					 
					 
					                  cmd ,  stdin = p . get ( ) ,  cwd = self . project_path ) 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            elif  p . is_new : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					              # There is only a header. Just create the file. 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					              open ( os . path . join ( self . project_path ,  p . filename ) ,  ' w ' ) . close ( ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					          if  p . is_new : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            stdout  + =  self . _check_output_svn ( 
 
					 
					 
					 
					            stdout  + =  self . _check_output_svn ( 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                [ ' add ' ,  p . filename ,  ' --force ' ] ,  credentials = False ) 
 
					 
					 
					 
					                [ ' add ' ,  p . filename ,  ' --force ' ] ,  credentials = False ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					          for  prop  in  p . svn_properties : 
 
					 
					 
					 
					          for  prop  in  p . svn_properties : 
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -410,6 +416,8 @@ class GitCheckoutBase(CheckoutBase):
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					              f . write ( p . get ( ) ) 
 
					 
					 
					 
					              f . write ( p . get ( ) ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            stdout  + =  self . _check_output_git ( [ ' add ' ,  p . filename ] ) 
 
					 
					 
					 
					            stdout  + =  self . _check_output_git ( [ ' add ' ,  p . filename ] ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					          else : 
 
					 
					 
					 
					          else : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            # No need to do anything special with p.is_new or if not 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            # p.diff_hunks. git apply manages all that already. 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            stdout  + =  self . _check_output_git ( 
 
					 
					 
					 
					            stdout  + =  self . _check_output_git ( 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                [ ' apply ' ,  ' --index ' ,  ' -p %s '  %  p . patchlevel ] ,  stdin = p . get ( ) ) 
 
					 
					 
					 
					                [ ' apply ' ,  ' --index ' ,  ' -p %s '  %  p . patchlevel ] ,  stdin = p . get ( ) ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					          for  prop  in  p . svn_properties : 
 
					 
					 
					 
					          for  prop  in  p . svn_properties :