X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=git-mv.perl;h=53046bafd66ebc4c3a7ef5c65a6363ef5201dcdd;hb=706fe6ae03e2c1452d59892944701c56237b903f;hp=990bec50343a337c90d269e3b860cc82fad414e3;hpb=3ae64dff6894adc995c913aaf7fe2d65c78c3529;p=git.git diff --git a/git-mv.perl b/git-mv.perl index 990bec50..53046baf 100755 --- a/git-mv.perl +++ b/git-mv.perl @@ -108,7 +108,7 @@ while(scalar @srcArgs > 0) { } } - if (($bad eq "") && ($src eq $dstDir)) { + if (($bad eq "") && ($dst =~ /^$safesrc\//)) { $bad = "can not move directory '$src' into itself"; } @@ -142,14 +142,22 @@ while(scalar @srcArgs > 0) { # Final pass: rename/move my (@deletedfiles,@addedfiles,@changedfiles); +$bad = ""; while(scalar @srcs > 0) { $src = shift @srcs; $dst = shift @dsts; if ($opt_n || $opt_v) { print "Renaming $src to $dst\n"; } if (!$opt_n) { - rename($src,$dst) - or die "rename failed: $!"; + if (!rename($src,$dst)) { + $bad = "renaming '$src' failed: $!"; + if ($opt_k) { + print "Warning: skipped: $bad\n"; + $bad = ""; + next; + } + last; + } } $safesrc = quotemeta($src); @@ -209,3 +217,8 @@ else { close(H); } } + +if ($bad ne "") { + print "Error: $bad\n"; + exit(1); +}