From: Glen Choo Date: Thu, 03 Mar 2022 22:24:11 GMT Subject: Re: What does it mean to have multiple upstream tracking branches? Message-ID: In-Reply-To: <220303.868rtr42mg.gmgdl@evledraar.gmail.com> Ævar Arnfjörð Bjarmason writes: > 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..merge and >> branch..remote configs. >> >> Until Josh Steadman's recent work on --track=inherit, the "automatic" >> addition of branch..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..remote can only have one value. >> >> Is there any documentation (or could someone provide pointers) as to >> when multiple branch..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..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