Subject: Re: [PATCH v5 0/5] implement branch --recurse-submodules

From: Junio C Hamano <[email-masked]>
Date: Thu, 16 Dec 2021 16:45:26 -0800

Junio C Hamano <[email-masked]> writes:

> Glen Choo <[email-masked]> writes:
>
>> This series implements branch --recurse-submodules as laid out in the
>> Submodule branching RFC (linked above). If there are concerns about the
>> UX/behavior, I would appreciate feedback on the RFC thread as well :)
>>
>> This series is based off js/branch-track-inherit.
>
> Sigh.
>
> When a series is labelled as "based off of X", I expect that the
> series either apply on the tip of branch X I have, or it applies on
> top of the merge result of branch X into 'master'.  It shouldn't be
> forked at a random point on the 'seen' or 'next' branch, as you'd
> end up depending on not just X but all the other topics that are
> merged before X is merged to these integration branches.
>
> This seems not apply on either c99fa303 (config: require lowercase
> for branch.autosetupmerge, 2021-12-14), which is the tip of the
> js/branch-track-inherit topic, or 47e85bee (Merge branch
> 'js/branch-track-inherit' into gc/branch-recurse-submodules,
> 2021-12-15), which is a merge of that topic into 'master' I prepared
> to queue the previous round of this topic the other day.

Ah, I figured it out.

These are based on the merge of the other branch into 'seen'.  I
have (deliberately) merged js/branch-track-inherit and the previous
round of this tipc in 'seen' next to each other.

And when these five are applied on top of that merge of the other
topic into 'seen', we get an identical tree as the merge of the
previous round of this topic into 'seen'.

So unless you updated some commit log message, nothing is lost if I
ignore this round.  Just to save time for both of us the next time,
plesae fetch from any of the public tree, find on the first parent
chain leading to 'origin/seen' a commit labelled as "Merge branch
'gc/branch-recurse-submodules'", and check out its second parent,
and what we have there.

    $ git checkout "origin/seen^{/^Merge branch .gc/branch-rec}^2"
    $ git log --first-parent --oneline origin/main..
    35bb9f67f9 branch: add --recurse-submodules option for branch creation
    ce3a710d42 builtin/branch: clean up action-picking logic in cmd_branch()
    f368230ca9 branch: add a dry_run parameter to create_branch()
    d77f8a125b branch: make create_branch() always create a branch
    f8a88a03b9 branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
    47e85beee9 Merge branch 'js/branch-track-inherit' into gc/branch-recurse-submodules

If you "rebase -i 47e85beee9" (the exact object name might differ,
as that commit needs to be recreated when 'js/branch-track-inherit'
is updated) these five commits, and format-patch everything on the
topic with --base=47e85beee9, it is guaranteed that I'll be able to
cleanly apply what you meant to send out on top of 47e85beee9.

Thanks.