git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
JWJosef Weidendorfer <josef.weidendorfer@gmx.de>
Date
Nov 27, 2005, 21:04 UTC
Message-ID
<200511272204.14835.Josef.Weidendorfer@gmx.de>

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>
---
This is actually independent from the just sent patch, but
the context lines shows it applied...
 git-mv.perl |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

applies-to: 8acd56ea24d565996dc4618f7d7e4fa152d8623c 81f4a3e528094e5e2b0221fd6e76edd205c8e56d

diff --git a/git-mv.perl b/git-mv.perl
index 990bec5..ac19876 100755
--- a/git-mv.perl
+++ b/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);
+}
---
0.99.9.GIT
Message 1 of 1 in “git-mv: keep git index consistent with file system on failed rename”
  1. Josef WeidendorferNov 27, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.