summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2007-07-27 23:51:45 -0700
committerJunio C Hamano <gitster@pobox.com>2007-07-28 00:06:00 -0700
commit83b3df7d582429d9036f34d2c95abfff7bf0ab24 (patch)
tree6d347b14edee2df30ca7b9620d93789861f4bc72
parentcbeaccc316affa2e0fb0b60f569d5da9bf444881 (diff)
downloadgit-83b3df7d582429d9036f34d2c95abfff7bf0ab24.tar.gz
git-stash apply --index: optimize postprocessing
Originally, "apply --index" codepath was bolted on to the "update working tree files and index, but then revert the changes we make to the index except for added files so that we do not forget about them" codepath, almost as an afterthought. Because "apply --index" first prepares the final index state upfront, "revert except the added paths" postprocessing does not have to be done. Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-stash.sh13
1 files changed, 7 insertions, 6 deletions
diff --git a/git-stash.sh b/git-stash.sh
index 873e7be6ad..30425ce6df 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -157,15 +157,16 @@ apply_stash () {
if git-merge-recursive $b_tree -- $c_tree $w_tree
then
# No conflict
- a="$TMP-added" &&
- git diff --cached --name-only --diff-filter=A $c_tree >"$a" &&
- git read-tree --reset $c_tree &&
- git update-index --add --stdin <"$a" ||
- die "Cannot unstage modified files"
- rm -f "$a"
if test -n "$unstashed_index_tree"
then
git read-tree "$unstashed_index_tree"
+ else
+ a="$TMP-added" &&
+ git diff --cached --name-only --diff-filter=A $c_tree >"$a" &&
+ git read-tree --reset $c_tree &&
+ git update-index --add --stdin <"$a" ||
+ die "Cannot unstage modified files"
+ rm -f "$a"
fi
git status || :
else