summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosef Weidendorfer <Josef.Weidendorfer@gmx.de>2005-10-25 12:20:45 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-10-26 05:50:49 (GMT)
commit05ff5649a4fd90c3c80f507165bbaf07dc0dbe8e (patch)
tree075bfd7b6fdb3863dac4f5b8592e49f1ea900cd4
parent979e32fa1483a32faa4ec331e29b357e5eb5ef25 (diff)
downloadgit-05ff5649a4fd90c3c80f507165bbaf07dc0dbe8e.zip
git-05ff5649a4fd90c3c80f507165bbaf07dc0dbe8e.tar.gz
git-05ff5649a4fd90c3c80f507165bbaf07dc0dbe8e.tar.bz2
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>
-rwxr-xr-xgit-mv.perl12
1 files changed, 11 insertions, 1 deletions
diff --git a/git-mv.perl b/git-mv.perl
index 28bced9..17e35b0 100755
--- a/git-mv.perl
+++ b/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";