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

Re: [RFD/PATCH 3/5] checkout: Use remote refspecs when DWIMming tracking branches

From
Johan Herland <johan@herland.net>
Date
Apr 20, 2013, 08:05 UTC
Message-ID
<CALKQrgcWdUxauU2rAGSVggE-QjBW2PMXCdr6xg4habqyA6rj=g@mail.gmail.com>
In-Reply-To
<7vzjwuz4ov.fsf@alter.siamese.dyndns.org>
On Fri, Apr 19, 2013 at 9:44 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 18 quoted lines
> I am _guessing_ that you mean a case like this:
>
>         [remote "origin"]
>                 fetch = refs/heads/*:refs/remotes/origin/*
>         [remote "xyzzy"]
>                 fetch = refs/heads/*:refs/remotes/xyzzy/nitfol/*
>         [remote "frotz"]
>                 fetch = refs/heads/*:refs/remotes/frotz/nitfol/*
>
> and refs/remotes/origin/foo or refs/remotes/frotz/nitfol/foo do not
> exist but refs/remotes/xyzzy/nitfol/foo does.  And the user says
> "git checkout foo".  Instead of finding a remote ref that matches
> "refs/remotes/*/foo" pattern (and assuming the part that matched *
> is the name of the remote), you can iterate the RHS of the refspecs
> to see if there is a unique match.
>
> Then the new branch can unambiguously find that its upstream is
> xyzzy's foo.
Correct. I will try to phrase the problem better in the next iteration.
Show 5 quoted lines
> I think it makes sense to update the semantics like that.
>
> Wouldn't the traditional case (i.e. without "nitfol/" in the
> xyzzy/frotz remotes above) be a mere special case for this new
> logic?
Yes.
> You mentioned there is a regression caught by existing tests
> if you go this route, but I do not see how that happens.

It's technically a regression since it breaks existing tests, but as you observe in your reply to patch #5, it is really the test that relies on current implementation details.

...Johan

-- Johan Herland, <johan@herland.net> www.herland.net

Previous: Junio C HamanoNext: Johan Herland
Message 6 of 9 in “Improving the search for remote-tracking branches”
  1. 0/5 Improving the search for remote-tracking branchesJohan Herland, Apr 19, 2013
  2. 1/5 t2024: Add tests verifying current DWIM behavior of 'git checkout <branch>'Johan Herland, Apr 19, 2013
  3. 2/5 t2024: Show failure to use refspec when DWIMming remote branch namesJohan Herland, Apr 19, 2013
  4. 3/5 checkout: Use remote refspecs when DWIMming tracking branchesJohan Herland, Apr 19, 2013
  5. Junio C HamanoApr 19, 2013
  6. Johan HerlandApr 20, 2013
  7. 4/5 branch.c: Look up refspecs to validate tracking branchesJohan Herland, Apr 19, 2013
  8. 5/5 RFD: Disallow out-of-refspec refs within refs/remotes/* to be used as upstreamJohan Herland, Apr 19, 2013
  9. Junio C HamanoApr 19, 2013

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.