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:
parent
3ae64dff68
commit
f6bc189a45
12
git-mv.perl
12
git-mv.perl
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user