Remove the temp file if it is empty after the request has failed
[gitweb.git] / git-mv.perl
index 28bced95954e40273fc783977d857e5c74d44b51..a21d87eea88d4b1e9a40e4e7f7b836374f566c70 100755 (executable)
@@ -54,6 +54,8 @@ ()
 my $argCount = scalar @ARGV;
 if (-d $ARGV[$argCount-1]) {
        $dstDir = $ARGV[$argCount-1];
+       # remove any trailing slash
+       $dstDir =~ s/\/$//;
        @srcArgs = @ARGV[0..$argCount-2];
        
        foreach $src (@srcArgs) {
@@ -77,7 +79,7 @@ ()
 
 my (@allfiles,@srcfiles,@dstfiles);
 my $safesrc;
-my %overwritten;
+my (%overwritten, %srcForDst);
 
 $/ = "\0";
 open(F,"-|","git-ls-files","-z")
@@ -123,6 +125,16 @@ ()
        }
     }
 
+    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";