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

[PATCH] stash: copy the index using --index-output instead of cp -p

From
Johannes Sixt <j.sixt@viscovery.net>
Date
Mar 15, 2011, 12:37 UTC
Message-ID
<4D7F5DA0.3030608@viscovery.net>
In-Reply-To
<4D7F54C2.5060500@elegosoft.com>
From: Johannes Sixt <j6t@kdbg.org>

'git stash create' must operate with a temporary index. For this purpose, it used 'cp -p' to create a copy. -p is needed to preserve the timestamp of the index file. Now Jakob Pfender reported a certain combination of a Linux NFS client, OpenBSD NFS server, and cp implementation where this operation failed.

Luckily, the first operation in git-stash after copying the index is to call 'git read-tree'. Therefore, use --index-output instead of 'cp -p' to write the copy of the index.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Tested-by: Jakob Pfender <jpfender@elegosoft.com>
---
 Here's a wrap-up. Acked-by is reserved for people whose area-of-expertise
 is touched by someone else. Tested-by is more appropriate here.
 git-stash.sh |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/git-stash.sh b/git-stash.sh
index 7561b37..fa62135 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -82,10 +82,9 @@ create_stash () {
 		# state of the working tree
 		w_tree=$( (
 			rm -f "$TMP-index" &&
-			cp -p ${GIT_INDEX_FILE-"$GIT_DIR/index"} "$TMP-index" &&
+			git read-tree --index-output="$TMP-index" -m $i_tree &&
 			GIT_INDEX_FILE="$TMP-index" &&
 			export GIT_INDEX_FILE &&
-			git read-tree -m $i_tree &&
 			git diff --name-only -z HEAD | git update-index -z --add --remove --stdin &&
 			git write-tree &&
 			rm -f "$TMP-index"
-- 
1.7.4.rc3.76.gfb457d
Previous: Jakob PfenderNext: Junio C Hamano
Message 4 of 9 in “[RFD] git stash over OpenBSD/Linux NFS - cp -p breakage”
  1. Jakob PfenderMar 15, 2011
  2. Johannes SixtMar 15, 2011
  3. Jakob PfenderMar 15, 2011
  4. stash: copy the index using --index-output instead of cp -pJohannes Sixt, Mar 15, 2011
  5. Junio C HamanoMar 15, 2011
  6. Bert WesargMar 15, 2011
  7. Johannes SixtMar 16, 2011
  8. 1/2 stash: fix incorrect quoting in cleanup of temporary filesJohannes Sixt, Mar 16, 2011
  9. 2/2 stash: copy the index using --index-output instead of cp -pJohannes Sixt, Mar 16, 2011

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.