On Mon, Apr 19, 2021 at 08:56:43AM -0400, Aaron Schrab wrote: > > At 16:36 -0700 16 Apr 2021, Emily Shaffer <emilyshaffer@xxxxxxxxxx> wrote: > > - git switch / git checkout > > (snip) > > > 4. A new branch with the same name is created on each submodule. > > a. If there is a naming conflict, we could prompt the user to resolve it, or > > we could just check out the branch by that name and print a warning to the > > user with advice on how to solve it (cd submodule && git switch -c > > different-branch-name HEAD@{1}). Maybe we could skip the warning/advice if > > the tree is identical to the tree we would have used as the start point > > (that is, the user switched branches in the submodule, then said "oh crap" > > and went back and switched branches in the superproject). > > b. Tracking info is set appropriately on each new branch to the upstream of > > the branch referenced by the parent of the new superproject commit, OR to > > the default branch's upstream. > > 5. The new branch is checked out on each of the submodules. > > In many cases the branch name for the superproject isn't going to be > appropriate for submodules. > > This seems likely to create a LOT of junk branches. Do you also have a > proposal for cleaning those up? Yeah, I think we have a point internally for "clean up alllll the submodule branches that are unreferenced/already merged". You're right that in a workflow where I have a superproject with eight submodules, because I need them to build, but only do active development on one submodule out of the eight, I'll have a ton of junk refs in the other seven submodules. Yuck :) - Emily