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

Re: What does it mean to have multiple upstream tracking branches?

From
Glen Choo <chooglen@google.com>
Date
Mar 3, 2022, 22:24 UTC
Message-ID
<kl6l4k4ek73o.fsf@chooglen-macbookpro.roam.corp.google.com>
In-Reply-To
<220303.868rtr42mg.gmgdl@evledraar.gmail.com>
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
Show 29 quoted lines
> On Thu, Mar 03 2022, Tao Klerks wrote:
>
>>  Hi,
>>
>> In my recent attempt to create a "simple" branch.autosetupmerge
>> option, I have repeatedly been confused by the enforced rules around
>> what is and isn't valid for the branch.<name>.merge and
>> branch.<name>.remote configs.
>>
>> Until Josh Steadman's recent work on --track=inherit, the "automatic"
>> addition of branch.<name>.merge could only ever result in a single
>> entry.
>>
>> Now we support multiple entries being added as a perpetuation of an
>> existing branch's setup - but what does it *mean*? I could understand
>> if the idea was to have transparent tracking across multiple remotes
>> that are supposed to have the same content (eg a single server set up
>> over multiple protocols), but that does not appear to be possible -
>> branch.<name>.remote can only have one value.
>>
>> Is there any documentation (or could someone provide pointers) as to
>> when multiple branch.<name>.merge values can make sense and what that
>> means / what it does?
>
> Can you point out some existing tests where we end up with multiple
> *.merge values? I looked a bit and couldn't find any.
>
> Or maybe it's only possible to get into that state with some command we
> have a test blind spot for?

Based on the discussion on that thread you mentioned, I don't think we have any such tests. I think the only way to get into this state is to manually modify the config.

The only docs I could find on 'multiple values' are from Documentation/config/branch.txt:

  branch.<name>.merge::
    [...]
    Specify multiple values to get an octopus merge.
So I'd imagine a use case would be something like:
- I'm preparing a feature on the branch 'topic'
- It will get merged into 'origin/master'
- The feature also depends on 'origin/other-topic'
I'd have entries like:

branch.topic.remote = origin branch.topic.merge = master branch.topic.merge = other-topic

That way, if either 'origin/master' or 'origin/other-topic' changes, I can pull updates into 'topic' with "git pull".

Not that I would ever _recommend_ someone to work like this though. Junio also wondered whether anyone uses this [1].

[1] https://lore.kernel.org/git/xmqqbl2hw10h.fsf@gitster.g
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 3 of 10 in “What does it mean to have multiple upstream tracking branches?”
  1. Tao KlerksMar 3, 2022
  2. Ævar Arnfjörð BjarmasonMar 3, 2022
  3. Glen ChooMar 3, 2022
  4. Ævar Arnfjörð BjarmasonMar 6, 2022
  5. Tao KlerksMar 7, 2022
  6. Junio C HamanoMar 6, 2022
  7. Tao KlerksMar 7, 2022
  8. Ævar Arnfjörð BjarmasonMar 7, 2022
  9. Josh SteadmonMar 8, 2022
  10. Tao KlerksMar 7, 2022

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.