From: Johannes Sixt Date: Tue, 15 Mar 2011 12:37:52 GMT Subject: [PATCH] stash: copy the index using --index-output instead of cp -p Message-ID: <4D7F5DA0.3030608@viscovery.net> In-Reply-To: <4D7F54C2.5060500@elegosoft.com> From: Johannes Sixt '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 Tested-by: Jakob Pfender --- 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