Code

Merge branch 'jk/maint-stash-oob' into maint
authorJunio C Hamano <gitster@pobox.com>
Wed, 4 May 2011 21:58:42 +0000 (14:58 -0700)
committerJunio 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

git-stash.sh
t/t3903-stash.sh

index 81a59a250e0c69b0ead2819d91389146ac8504d7..0a9403653d7dbbb6927973dcfcc41bfd9a904e05 100755 (executable)
@@ -265,7 +265,7 @@ parse_flags_and_rev()
        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
@@ -311,16 +311,6 @@ parse_flags_and_rev()
        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()
index 0bd667f04b8e7c5a55fd0025bcf93e7f894ef394..5c725406422dcedb6c6d5e5d61cfc80f87d3595c 100755 (executable)
@@ -37,6 +37,12 @@ test_expect_success 'parents of stash' '
        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 &&
@@ -557,11 +563,11 @@ test_expect_success 'invalid ref of the form stash@{n}, n >= N' '
        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
 '