From: Josef Weidendorfer Date: Sun, 27 Nov 2005 21:04:14 +0000 (+0100) Subject: git-mv: keep git index consistent with file system on failed rename X-Git-Tag: v0.99.9l^2~51 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/f6bc189a457b2575587f26e27f1eabdd615b2d78 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 Signed-off-by: Junio C Hamano --- diff --git a/git-mv.perl b/git-mv.perl index 990bec5034..ac19876fec 100755 --- a/git-mv.perl +++ b/git-mv.perl @@ -142,14 +142,17 @@ () # 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 @@ () close(H); } } + +if ($bad ne "") { + print "Error: $bad\n"; + exit(1); +}