Message ID | 20211216233324.65126-1-chooglen@google.com (mailing list archive) |
---|---|
Headers | show |
Series | implement branch --recurse-submodules | expand |
Glen Choo <chooglen@google.com> 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.
Junio C Hamano <gitster@pobox.com> writes: > Glen Choo <chooglen@google.com> 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.
Junio C Hamano <gitster@pobox.com> writes: > Junio C Hamano <gitster@pobox.com> writes: > >> Glen Choo <chooglen@google.com> 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. Oh my goodness.. I'm sorry, I didn't mean to complicate matters like this. If it's alright with you, I'd like to check my understanding so that I can avoid this mistake in the future. What happened was that I got confused by [1], where it reads: [...] find the tip of js/branch-track-inherit from 'seen' [*] [...] [Footnote] * One way to do so would be: $ git fetch $ git show 'remote/origin/seen^{/^Merge branch .js/branch-track-inherit.}' The commit that I got was the "merge of js/branch-track-inherit into 'seen'", but what you intended was the "merge of js/branch-track-inherit into gc/branch-recurse-submodules"; I didn't realize that there might have been more than commit matching that regex. This makes much more sense in the context of your comment: That's OK; please do not ever rebase anything on top of 'seen' or 'next'. > 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. I made some commit message changes. Unless you think it's a good idea, I won't re-roll this to fix the issue. > 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. So if my branch were not in 'seen', I should have based my changes on 'origin/js/branch-track-inherit'. If my branch is in 'seen', I should base it off the merge of js/branch-track-inherit' into my my branch? I'll continue to use format-patch --base because I see how that can be useful for you. [1] https://lore.kernel.org/git/xmqqlf0lz6os.fsf@gitster.g/
Glen Choo <chooglen@google.com> writes: > What happened was that I got confused by [1], where it reads: > > [...] > find the tip of js/branch-track-inherit from 'seen' [*] > [...] > > [Footnote] > > * One way to do so would be: > > $ git fetch > $ git show 'remote/origin/seen^{/^Merge branch .js/branch-track-inherit.}' > > The commit that I got was the "merge of js/branch-track-inherit into > 'seen'", but what you intended was the "merge of js/branch-track-inherit > into gc/branch-recurse-submodules"; I didn't realize that there might > have been more than commit matching that regex. Yeah, that was not quite clearly written. The way it was showing was to find the tip of the other branch. The instruction was to prepare you (and others reading from the sidelines) for a case where your branch depends on somebody else's work that is *not* even in 'seen' (e.g. I may have an older version of 'seen' but there is a newer and clearly improved version on the list that is likely to replace). In such a case, you'd (1) "find" the tip of the other branch, either by traversing from the tip of 'seen' to find the merge and taking its second parent, or applying the latest from the list to a locally created topic branch forked off of 'main', (2) create your topic branch, forked off of 'main', and merge (1) into it, and (3) build your series on it. If I have your previous round, and if the other topic you depend on hasn't changed, you can omit (2) and instead find the equivalent of (2) I created for your topic the last time I queued it. > I made some commit message changes. Unless you think it's a good idea, I > won't re-roll this to fix the issue. Let's not waste your message changes to clarify the patches. > So if my branch were not in 'seen', I should have based my changes on > 'origin/js/branch-track-inherit'. If my branch is in 'seen', I should > base it off the merge of js/branch-track-inherit' into my my branch? Hopefully the above is clear now? Sorry for the trouble. Thanks.
Junio C Hamano <gitster@pobox.com> writes: > Glen Choo <chooglen@google.com> writes: > >> What happened was that I got confused by [1], where it reads: >> >> [...] >> find the tip of js/branch-track-inherit from 'seen' [*] >> [...] >> >> [Footnote] >> >> * One way to do so would be: >> >> $ git fetch >> $ git show 'remote/origin/seen^{/^Merge branch .js/branch-track-inherit.}' >> >> The commit that I got was the "merge of js/branch-track-inherit into >> 'seen'", but what you intended was the "merge of js/branch-track-inherit >> into gc/branch-recurse-submodules"; I didn't realize that there might >> have been more than commit matching that regex. > > Yeah, that was not quite clearly written. The way it was showing > was to find the tip of the other branch. The instruction was to > prepare you (and others reading from the sidelines) for a case where > your branch depends on somebody else's work that is *not* even in > 'seen' (e.g. I may have an older version of 'seen' but there is a > newer and clearly improved version on the list that is likely to > replace). In such a case, you'd > > (1) "find" the tip of the other branch, either by traversing from > the tip of 'seen' to find the merge and taking its second > parent, or applying the latest from the list to a locally > created topic branch forked off of 'main', > > (2) create your topic branch, forked off of 'main', and merge (1) > into it, and > > (3) build your series on it. > > If I have your previous round, and if the other topic you depend on > hasn't changed, you can omit (2) and instead find the equivalent of > (2) I created for your topic the last time I queued it. > >> I made some commit message changes. Unless you think it's a good idea, I >> won't re-roll this to fix the issue. > > Let's not waste your message changes to clarify the patches. > >> So if my branch were not in 'seen', I should have based my changes on >> 'origin/js/branch-track-inherit'. If my branch is in 'seen', I should >> base it off the merge of js/branch-track-inherit' into my my branch? > > Hopefully the above is clear now? Sorry for the trouble. > > Thanks. It's no trouble for me. I should be thanking you for taking the time to make it clear :) I really appreciate it.