[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