Browse Source

git-mv: keep git index consistent with file system on failed rename

When doing multiple renames, and a rename in the middle fails,
git-mv did not store the successful renames in the git index;
this is fixed by delaying the error message on a failed rename
to after the git updating.

Signed-off-by: Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Josef Weidendorfer 19 years ago committed by Junio C Hamano
parent
commit
f6bc189a45
  1. 12
      git-mv.perl

12
git-mv.perl

@ -142,14 +142,17 @@ while(scalar @srcArgs > 0) { @@ -142,14 +142,17 @@ 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: $!";
last;
}
}

$safesrc = quotemeta($src);
@ -209,3 +212,8 @@ else { @@ -209,3 +212,8 @@ else {
close(H);
}
}

if ($bad ne "") {
print "Error: $bad\n";
exit(1);
}

Loading…
Cancel
Save