summaryrefslogtreecommitdiff
path: root/t/t3903-stash.sh
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2011-04-05 21:23:15 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-04-06 16:41:22 (GMT)
commite0e2a9cbfa938d0f1e9857d5ca5b196360663440 (patch)
tree64fb74636a1e64564e5b6628a567c1f6316dc591 /t/t3903-stash.sh
parentfa38cfc2c6ce197960f85798aac18ee78aa83f1f (diff)
downloadgit-e0e2a9cbfa938d0f1e9857d5ca5b196360663440.zip
git-e0e2a9cbfa938d0f1e9857d5ca5b196360663440.tar.gz
git-e0e2a9cbfa938d0f1e9857d5ca5b196360663440.tar.bz2
stash: drop dirty worktree check on apply
Before we apply a stash, we make sure there are no changes in the worktree that are not in the index. This check dates back to the original git-stash.sh, and is presumably intended to prevent changes in the working tree from being accidentally lost during the merge. However, this check has two problems: 1. It is overly restrictive. If my stash changes only file "foo", but "bar" is dirty in the working tree, it will prevent us from applying the stash. 2. It is redundant. We don't touch the working tree at all until we actually call merge-recursive. But it has its own (much more accurate) checks to avoid losing working tree data, and will abort the merge with a nicer message telling us which paths were problems. So we can simply drop the check entirely. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t3903-stash.sh')
-rwxr-xr-xt/t3903-stash.sh20
1 files changed, 16 insertions, 4 deletions
diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh
index f62aaf5..5fcf52a 100755
--- a/t/t3903-stash.sh
+++ b/t/t3903-stash.sh
@@ -37,14 +37,26 @@ test_expect_success 'parents of stash' '
test_cmp output expect
'
-test_expect_success 'apply needs clean working directory' '
- echo 4 > other-file &&
+test_expect_success 'apply does not need clean working directory' '
+ echo 4 >other-file &&
git add other-file &&
- echo 5 > other-file &&
- test_must_fail git stash apply
+ echo 5 >other-file &&
+ git stash apply &&
+ echo 3 >expect &&
+ test_cmp expect file
+'
+
+test_expect_success 'apply does not clobber working directory changes' '
+ git reset --hard &&
+ echo 4 >file &&
+ test_must_fail git stash apply &&
+ echo 4 >expect &&
+ test_cmp expect file
'
test_expect_success 'apply stashed changes' '
+ git reset --hard &&
+ echo 5 >other-file &&
git add other-file &&
test_tick &&
git commit -m other-file &&