# [PATCH] completion: fix completing stashes with "show -p"

3 messages from 2020-05-21 to 2020-05-21. Participants: Ville Skyttä, Junio C Hamano.
Thread: https://gitlist.dev/t/53521

## Ville Skyttä, 2020-05-21 14:21

Subject: [PATCH] completion: fix completing stashes with "show -p"
Message-ID: <20200521142156.4717-1-ville.skytta@iki.fi>
URL: https://gitlist.dev/e/20200521142156.4717-1-ville.skytta%40iki.fi

```
Regression in df70b190bdd2add42a906819f9d41dbf91cf0809

Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
---
 contrib/completion/git-completion.bash | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 70ad04e1b2..8dc4ad0e0d 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -2782,7 +2782,7 @@ _git_stash ()
 	local save_opts='--all --keep-index --no-keep-index --quiet --patch --include-untracked'
 	local subcommands='push list show apply clear drop pop create branch'
 	local subcommand="$(__git_find_on_cmdline "$subcommands save")"
-	if [ -n "$(__git_find_on_cmdline "-p")" ]; then
+	if [ -z "$subcommand" -a -n "$(__git_find_on_cmdline "-p")" ]; then
 		subcommand="push"
 	fi
 	if [ -z "$subcommand" ]; then
-- 
2.27.0.rc1.dirty


```

## Junio C Hamano, 2020-05-21 18:24

Subject: Re: [PATCH] completion: fix completing stashes with "show -p"
Message-ID: <xmqqo8qhrvrz.fsf@gitster.c.googlers.com>
URL: https://gitlist.dev/e/xmqqo8qhrvrz.fsf%40gitster.c.googlers.com
In-Reply-To: <20200521142156.4717-1-ville.skytta@iki.fi>

```
Ville Skyttä <ville.skytta@iki.fi> writes:

> Regression in df70b190bdd2add42a906819f9d41dbf91cf0809

That's not very helpful to readers.

Something like this?  I am merely guessing why you thought this
change is a good one, but that is what the proposed log message
is supposed to do.

    df70b190 (completion: make stash -p and alias for stash push -p,
    2018-04-20) wanted to make sure "git stash -p <TAB>" offers the same
    completion as "git stash push -p <TAB>", but it did so by forcing
    the $subcommand to be "push" whenever then "-p" option is found on
    the command line.  

    This harms any subcommand that can take the "-p" option---even when
    the subcommand is explicitly given, e.g. "git stash show -p", the
    code added by the change would overwrite the $subcommand the user
    gave us.

    Fix it by making sure that the defaulting to "push" happens only
    when there is no $subcommand given yet.

Thanks.

>
> Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
> ---
>  contrib/completion/git-completion.bash | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 70ad04e1b2..8dc4ad0e0d 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -2782,7 +2782,7 @@ _git_stash ()
>  	local save_opts='--all --keep-index --no-keep-index --quiet --patch --include-untracked'
>  	local subcommands='push list show apply clear drop pop create branch'
>  	local subcommand="$(__git_find_on_cmdline "$subcommands save")"
> -	if [ -n "$(__git_find_on_cmdline "-p")" ]; then
> +	if [ -z "$subcommand" -a -n "$(__git_find_on_cmdline "-p")" ]; then
>  		subcommand="push"
>  	fi
>  	if [ -z "$subcommand" ]; then

```

## Ville Skyttä, 2020-05-21 18:31

Subject: Re: [PATCH] completion: fix completing stashes with "show -p"
Message-ID: <CABr9L5BzpA1fnVP7+wk62-MMrfb05LSu7egvn-enZb6cmMNt2Q@mail.gmail.com>
URL: https://gitlist.dev/e/CABr9L5BzpA1fnVP7%2Bwk62-MMrfb05LSu7egvn-enZb6cmMNt2Q%40mail.gmail.com
In-Reply-To: <xmqqo8qhrvrz.fsf@gitster.c.googlers.com>

```
On Thu, 21 May 2020 at 21:24, Junio C Hamano <gitster@pobox.com> wrote:
>
> Ville Skyttä <ville.skytta@iki.fi> writes:
>
> > Regression in df70b190bdd2add42a906819f9d41dbf91cf0809
>
> That's not very helpful to readers.
>
> Something like this?  I am merely guessing why you thought this
> change is a good one, but that is what the proposed log message
> is supposed to do.

Excellent guess and wording. Will copy verbatim and re-submit.

```
