Re: [PATCH 1/2] stash: fix accidental apply of non-existent stashes
On Wed, Apr 6, 2011 at 7:20 AM, Jeff King <peff@peff.net> wrote:
> Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Jon Seymour <jon.seymour@gmail.com>
I've also submitted a patch that fixes the test that should have caught this.
jon.
Show 56 quoted lines
> ---
> git-stash.sh | 12 +-----------
> t/t3903-stash.sh | 6 ++++++
> 2 files changed, 7 insertions(+), 11 deletions(-)
>
> diff --git a/git-stash.sh b/git-stash.sh
> index a305fb1..a5b1dc3 100755
> --- a/git-stash.sh
> +++ b/git-stash.sh
> @@ -264,7 +264,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
> @@ -310,16 +310,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 f62aaf5..11077f0 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 needs clean working directory' '
> echo 4 > other-file &&
> git add other-file &&
> --
> 1.7.4.3.13.g0b769.dirty
>
>