Check another error condition in git-mv
When moving multiple files at once, it can happen that files get the same target name, like in git-mv a/foo b/foo destdir Both a/foo and b/foo target destdir/foo. Signed-off-by: Josef Weidendorfer <Josef.Weidendorfer@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>maint
							parent
							
								
									979e32fa14
								
							
						
					
					
						commit
						05ff5649a4
					
				
							
								
								
									
										12
									
								
								git-mv.perl
								
								
								
								
							
							
						
						
									
										12
									
								
								git-mv.perl
								
								
								
								
							|  | @ -77,7 +77,7 @@ else { | |||
|  | ||||
| my (@allfiles,@srcfiles,@dstfiles); | ||||
| my $safesrc; | ||||
| my %overwritten; | ||||
| my (%overwritten, %srcForDst); | ||||
|  | ||||
| $/ = "\0"; | ||||
| open(F,"-|","git-ls-files","-z") | ||||
|  | @ -123,6 +123,16 @@ while(scalar @srcArgs > 0) { | |||
| 	} | ||||
|     } | ||||
|  | ||||
|     if ($bad eq "") { | ||||
|        if (defined $srcForDst{$dst}) { | ||||
|            $bad = "can not move '$src' to '$dst'; already target of "; | ||||
|            $bad .= "'".$srcForDst{$dst}."'"; | ||||
|        } | ||||
|        else { | ||||
|            $srcForDst{$dst} = $src; | ||||
|        } | ||||
|     } | ||||
|  | ||||
|     if ($bad ne "") { | ||||
| 	if ($opt_k) { | ||||
| 	    print "Warning: $bad; skipping\n"; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Josef Weidendorfer
						Josef Weidendorfer