diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2007-07-02 12:14:49 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-07-06 01:43:24 -0700 |
commit | 150937c42591b0e9fb6c17f96c459d57b5f3bfdb (patch) | |
tree | c6e6c6563da7c6e5846056d49ffaee88a92aec60 /t | |
parent | 46f74f007b86452c4b4135f5145f94eefc994ea2 (diff) | |
download | git-150937c42591b0e9fb6c17f96c459d57b5f3bfdb.tar.gz git-150937c42591b0e9fb6c17f96c459d57b5f3bfdb.tar.xz |
Teach git-stash to "apply --index"
When given this subcommand, git-stash will try to merge the stashed
index into the current one. Only trivial merges are possible, since
we have no index for the index ;-) If a trivial merge is not possible,
git-stash will bail out with a hint to skip the --index option.
For good measure, finally include a test case.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-x | t/t3903-stash.sh | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh new file mode 100755 index 000000000..392ac1c5c --- /dev/null +++ b/t/t3903-stash.sh @@ -0,0 +1,69 @@ +#!/bin/sh +# +# Copyright (c) 2007 Johannes E Schindelin +# + +test_description='Test git-stash' + +. ./test-lib.sh + +test_expect_success 'stash some dirty working directory' ' + echo 1 > file && + git add file && + test_tick && + git commit -m initial && + echo 2 > file && + git add file && + echo 3 > file && + test_tick && + git stash && + git diff-files --quiet && + git diff-index --cached --quiet HEAD +' + +cat > expect << EOF +diff --git a/file b/file +index 0cfbf08..00750ed 100644 +--- a/file ++++ b/file +@@ -1 +1 @@ +-2 ++3 +EOF + +test_expect_success 'parents of stash' ' + test $(git rev-parse stash^) = $(git rev-parse HEAD) && + git diff stash^2..stash > output && + diff -u output expect +' + +test_expect_success 'apply needs clean working directory' ' + echo 4 > other-file && + git add other-file && + echo 5 > other-file + ! git stash apply +' + +test_expect_success 'apply stashed changes' ' + git add other-file && + test_tick && + git commit -m other-file && + git stash apply && + test 3 = $(cat file) && + test 1 = $(git show :file) && + test 1 = $(git show HEAD:file) +' + +test_expect_success 'apply stashed changes (including index)' ' + git reset --hard HEAD^ && + echo 6 > other-file && + git add other-file && + test_tick && + git commit -m other-file && + git stash apply --index && + test 3 = $(cat file) && + test 2 = $(git show :file) && + test 1 = $(git show HEAD:file) +' + +test_done |