git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Git completion not using ls-remote to auto-complete during push

From
RDRobert Dailey <rcdailey.lists@gmail.com>
Date
Jun 18, 2015, 19:12 UTC
Message-ID
<CAHd499A5rUvHQBQx3GgoTGnhzOhXEwS4SFGOE=ujGo43nyTe1A@mail.gmail.com>
In-Reply-To
<20150618175536.Horde.csrWs9ln__S_ZM2wEkboXw1@webmail.informatik.kit.edu>
On Thu, Jun 18, 2015 at 10:55 AM, SZEDER Gábor <szeder@ira.uka.de> wrote:
Show 60 quoted lines
>
> Quoting Robert Dailey <rcdailey.lists@gmail.com>:
>
>> On Thu, Jun 18, 2015 at 6:29 AM, SZEDER Gábor <szeder@ira.uka.de> wrote:
>>>
>>> Quoting Robert Dailey <rcdailey.lists@gmail.com>
>>>>
>>>> I do the following:
>>>>
>>>> $ git push origin :topic
>>>>
>>>> If I stop halfway through typing 'topic' and hit TAB, auto-completion
>>>> does not work if I do not have a local branch by that name (sometimes
>>>> I delete my local branch first, then I push to delete it remotely). I
>>>> thought that git completion code was supposed to use ls-remote to auto
>>>> complete refs used in push operations. Is this supposed to work?
>>>
>>>
>>> It's intentional.  Running 'git ls-remote' with a far away remote can
>>> take ages, so instead we grab the refs on the remote from the locally
>>> stored refs under 'refs/remotes/<remote>/'.
>>>
>>> See e832f5c096 (completion: avoid ls-remote in certain scenarios,
>>> 2013-05-28).  The commit message mentions that you can "force"
>>> completion of remote refs via 'git ls-remote' by starting with the full
>>> refname, i.e.  'refs/<TAB>', however, that seems to work only on the
>>> left hand side of the colon in the push refspec.
>>>
>>> Gábor
>>>
>>
>> If that's indeed the case, then completion should work. I have a
>> 'refs/remotes/origin/topic'. Why will auto complete not work even
>> though this exists? Do multiple remotes cause issues (in theory there
>> is no reason why it should cause problems, since it should know I'm
>> auto-completing a ref on 'origin')?
>
>
> The number of remotes doesn't matter.
> What matters is which side of the colon the ref to be completed is.
>
> You can complete
>
>   git push origin refs/<TAB>
>
> and
>
>   git fetch origin refs/<TAB>
>
> will even list you refs freshly queried via 'git ls-remote'.
> However,
>
>   git push origin :refs/<TAB>
>   git push origin branch:refs/<TAB>
>
> don't work, because there are no refs starting with the prefix ':refs/' or
> 'branch:refs/'.
>
> Gábor
>

Interesting. So is it just a glaring bug that the git completion script isn't ignoring the : and anything to the left of it? Or is this beyond the control of the script?

Previous: SZEDER Gábor
Message 6 of 6 in “Git completion not using ls-remote to auto-complete during push”
  1. Robert DaileyJun 17, 2015
  2. Stefan NäweJun 18, 2015
  3. SZEDER GáborJun 18, 2015
  4. Robert DaileyJun 18, 2015
  5. SZEDER GáborJun 18, 2015
  6. Robert DaileyJun 18, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.