author | Junio C Hamano <gitster@pobox.com> | |
Wed, 4 May 2011 21:58:42 +0000 (14:58 -0700) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Wed, 4 May 2011 21:58:42 +0000 (14:58 -0700) |
* jk/maint-stash-oob:
stash: fix false positive in the invalid ref test.
stash: fix accidental apply of non-existent stashes
Conflicts:
t/t3903-stash.sh
stash: fix false positive in the invalid ref test.
stash: fix accidental apply of non-existent stashes
Conflicts:
t/t3903-stash.sh
git-stash.sh | patch | blob | history | |
t/t3903-stash.sh | patch | blob | history |
diff --git a/git-stash.sh b/git-stash.sh
index 81a59a250e0c69b0ead2819d91389146ac8504d7..0a9403653d7dbbb6927973dcfcc41bfd9a904e05 100755 (executable)
--- a/git-stash.sh
+++ b/git-stash.sh
b_tree=
i_tree=
- REV=$(git rev-parse --no-flags --symbolic "$@" 2>/dev/null)
+ REV=$(git rev-parse --no-flags --symbolic "$@") || exit 1
FLAGS=
for opt
IS_STASH_LIKE=t &&
test "$ref_stash" = "$(git rev-parse --symbolic-full-name "${REV%@*}")" &&
IS_STASH_REF=t
-
- if test "${REV}" != "${REV%{*\}}"
- then
- # maintainers: it would be better if git rev-parse indicated
- # this condition with a non-zero status code but as of 1.7.2.1 it
- # it did not. So, we use non-empty stderr output as a proxy for the
- # condition of interest.
- test -z "$(git rev-parse "$REV" 2>&1 >/dev/null)" || die "$REV does not exist in the stash log"
- fi
-
}
is_stash_like()
diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh
index 0bd667f04b8e7c5a55fd0025bcf93e7f894ef394..5c725406422dcedb6c6d5e5d61cfc80f87d3595c 100755 (executable)
--- a/t/t3903-stash.sh
+++ b/t/t3903-stash.sh
test_cmp output expect
'
+test_expect_success 'applying bogus stash does nothing' '
+ test_must_fail git stash apply stash@{1} &&
+ echo 1 >expect &&
+ test_cmp expect file
+'
+
test_expect_success 'apply does not need clean working directory' '
echo 4 >other-file &&
git add other-file &&
echo bar6 > file2 &&
git add file2 &&
git stash &&
- test_must_fail git drop stash@{1} &&
- test_must_fail git pop stash@{1} &&
- test_must_fail git apply stash@{1} &&
- test_must_fail git show stash@{1} &&
- test_must_fail git branch tmp stash@{1} &&
+ test_must_fail git stash drop stash@{1} &&
+ test_must_fail git stash pop stash@{1} &&
+ test_must_fail git stash apply stash@{1} &&
+ test_must_fail git stash show stash@{1} &&
+ test_must_fail git stash branch tmp stash@{1} &&
git stash drop
'