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
SZEDER Gábor <szeder@ira.uka.de>
Date
Jun 18, 2015, 15:55 UTC
Message-ID
<20150618175536.Horde.csrWs9ln__S_ZM2wEkboXw1@webmail.informatik.kit.edu>
In-Reply-To
<CAHd499DeUOqsuSoysaOAAYORk3B=XBXco9yEKdXt8m4XJYFyZw@mail.gmail.com>
Quoting Robert Dailey <rcdailey.lists@gmail.com>:
Show 30 quoted lines
> 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
Previous: Robert DaileyNext: Robert Dailey
Message 5 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.