diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-05-04 14:58:42 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-05-04 14:58:42 -0700 |
commit | be44a20aa88b196b769dd894c0ac7a9ff5a7a1f6 (patch) | |
tree | f624a14245eb53774ec0443b5dbf0f7fd0fd1149 | |
parent | 476e42422d3a62a6aa301e41ba3def6882d37e9e (diff) | |
parent | 9355fc9c35a5c40bbd8e380ec9e36013a1b230ed (diff) | |
download | git-be44a20aa88b196b769dd894c0ac7a9ff5a7a1f6.tar.gz |
Merge branch 'jk/maint-stash-oob' into maint
* 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
-rwxr-xr-x | git-stash.sh | 12 | ||||
-rwxr-xr-x | t/t3903-stash.sh | 16 |
2 files changed, 12 insertions, 16 deletions
diff --git a/git-stash.sh b/git-stash.sh index 81a59a250e..0a9403653d 100755 --- a/git-stash.sh +++ b/git-stash.sh @@ -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() diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh index 0bd667f04b..5c72540642 100755 --- a/t/t3903-stash.sh +++ b/t/t3903-stash.sh @@ -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 ' |