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>
This commit is contained in:
Josef Weidendorfer 2005-11-27 22:04:14 +01:00 committed by Junio C Hamano
parent 3ae64dff68
commit f6bc189a45

View File

@ -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 {
close(H);
}
}
if ($bad ne "") {
print "Error: $bad\n";
exit(1);
}