# Re: bug in bash completion for git-branch --set-upstream-to on OSX

3 messages from 2015-03-22 to 2015-03-23. Participants: SZEDER Gábor, Jason Karns.
Thread: https://gitlist.dev/t/38883

## SZEDER Gábor, 2015-03-22 11:06

Subject: Re: bug in bash completion for git-branch --set-upstream-to on OSX
Message-ID: <20150322120612.Horde.LAxCkP-VMKE3Ur7ZXII3Hg1@webmail.informatik.kit.edu>
URL: https://gitlist.dev/e/20150322120612.Horde.LAxCkP-VMKE3Ur7ZXII3Hg1%40webmail.informatik.kit.edu

```

Hi,

Quoting Jason Karns <karns.17@gmail.com>:

> There appears to be a bug in the bash completion for git-branch when
> attempting to complete the remote ref argument for --set-upstream-to=
>
> When:
>
> $ git branch --set-upstream-to=origin/mast<TAB>
>
> I would expect it to complete to:
>
> $ git branch --set-upstream-to=origin/master
>
> However, the completion for --set-upstream-to= completes the ref
> correctly, but completely wipes the --set-upstream option; resulting
> in:
>
> $ git branch origin/master

Strange.

The code in question

    case "$cur" in
    --set-upstream-to=*)
            __gitcomp "$(__git_refs)" "" "${cur##--set-upstream-to=}"
            ;;

looks unsuspicious, this is the "standard" way to complete
'--option=<TAB>' (except that we should use __gitcomp_nl() for  
completing refs, but that should have no effect on this issue).  Does  
the same issue affect other 'git cmd --option=<TAB>' completions as  
well, e.g. 'git log --date=<TAB>' or 'git commit --reuse-message=<TAB>'?

We had a similar issue with ':' on the command line a looong while
ago, see v1.5.6.4~9^2 (bash completion: Resolve git show ref:path<tab>
losing ref: portion, 2008-07-15).  Maybe we are dealing with the same  
issue here, just a different character?

What does

    printf "$COMP_WORDBREAKS" |tr ' \t\n' STN

print out?  Is the '=' missing, perhaps?  If that's indeed the case,
does adding it back (COMP_WORDBREAKS="$COMP_WORDBREAKS"=) fix the issue?

Gábor

```

## Jason Karns, 2015-03-23 13:45

Subject: Re: bug in bash completion for git-branch --set-upstream-to on OSX
Message-ID: <CAKNmmv2ap+svVJQHBjNzdcNuc42Urbt6uuBVRjfUMveb98sRHQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAKNmmv2ap%2BsvVJQHBjNzdcNuc42Urbt6uuBVRjfUMveb98sRHQ%40mail.gmail.com
In-Reply-To: <20150322120612.Horde.LAxCkP-VMKE3Ur7ZXII3Hg1@webmail.informatik.kit.edu>

```
On Sun, Mar 22, 2015 at 7:06 AM, SZEDER Gábor <szeder@ira.uka.de> wrote:
>
> Hi,
>
> Quoting Jason Karns <karns.17@gmail.com>:
>
>> There appears to be a bug in the bash completion for git-branch when
>> attempting to complete the remote ref argument for --set-upstream-to=
>>
>> When:
>>
>> $ git branch --set-upstream-to=origin/mast<TAB>
>>
>> I would expect it to complete to:
>>
>> $ git branch --set-upstream-to=origin/master
>>
>> However, the completion for --set-upstream-to= completes the ref
>> correctly, but completely wipes the --set-upstream option; resulting
>> in:
>>
>> $ git branch origin/master
>
>
> Strange.
>
> The code in question
>
>    case "$cur" in
>    --set-upstream-to=*)
>            __gitcomp "$(__git_refs)" "" "${cur##--set-upstream-to=}"
>            ;;
>
> looks unsuspicious, this is the "standard" way to complete
> '--option=<TAB>' (except that we should use __gitcomp_nl() for completing
> refs, but that should have no effect on this issue).  Does the same issue
> affect other 'git cmd --option=<TAB>' completions as well, e.g. 'git log
> --date=<TAB>' or 'git commit --reuse-message=<TAB>'?

Yep, same buggy behavior.

>
> We had a similar issue with ':' on the command line a looong while
> ago, see v1.5.6.4~9^2 (bash completion: Resolve git show ref:path<tab>
> losing ref: portion, 2008-07-15).  Maybe we are dealing with the same issue
> here, just a different character?
>
> What does
>
>    printf "$COMP_WORDBREAKS" |tr ' \t\n' STN
>
> print out?  Is the '=' missing, perhaps?  If that's indeed the case,
> does adding it back (COMP_WORDBREAKS="$COMP_WORDBREAKS"=) fix the issue?

Adding it back in did indeed fix the issue. Now I get to track down
who/why `=` isn't present in COMP_WORDBREAKS.

Thanks!

>
> Gábor
>

Jason

```

## Jason Karns, 2015-03-23 14:42

Subject: Re: bug in bash completion for git-branch --set-upstream-to on OSX
Message-ID: <CAKNmmv3wpaECBbj8atA1s6hPzBvSMvfc=kkDTgbim4ufKVQuLg@mail.gmail.com>
URL: https://gitlist.dev/e/CAKNmmv3wpaECBbj8atA1s6hPzBvSMvfc%3DkkDTgbim4ufKVQuLg%40mail.gmail.com
In-Reply-To: <CAKNmmv2ap+svVJQHBjNzdcNuc42Urbt6uuBVRjfUMveb98sRHQ@mail.gmail.com>

```
For those curious, the source of the broken behavior is npm's
completion script. It is modifying COMP_WORDBREAKS. There are two open
issues against npm for this bug.

https://github.com/npm/npm/issues/4530
https://github.com/npm/npm/issues/5820

Jason

```
