On Mon, Dec 12, 2011 at 08:33:15AM +0100, Stefan Haller wrote: > > Local branches can track each other. So the script needs to toposort > > the branches, or to loop until either nothing was done or an error > > happened. (The latter to prevent an eternal loop on error.) > > Is this just theoretical, or are there real use cases for this? What > would be a workflow with such a local tracking branch? I use this all the time. In git.git, we use a topic branch workflow (i.e., every feature gets its own topic branch, and topics graduate independently to master as they are deemed stable). And we use a patch-submission workflow, which means it's OK for me to rebase my topics locally, because the end-product is a series of patches sent to the list. Typically I branch off of "origin/master", so the topic is independent of anything else. For example, the "jk/credentials" branch in my git repo is branched from "origin/master" (Junio's master). But sometimes there is a topic that depends on another topic, but should not be part of the same series (because the the first topic can graduate to master, but the second one may still need more time for discussion and cooking). In that case, I'll set the upstream to the other local topic branch. An example of this is the "jk/prompt" series, which depends on "jk/credentials" for infrastructure, but is really a separate issue. Having the upstream set is convenient, because I can get _just_ the commits in jk/prompt with "git log @{u}..". Or I can rebase _just_ the commits in that topic with "git rebase -i". If my upstream were set to origin, I would accidentally also rebase all of the commits pulled in from jk/credentials, too. While my topics are still in development (i.e., before they have even hit "next"), I tend to rebase them aggressively (so that I keep them up to date with git development), using a script that is something like[1]: for i in `topics`; do git rebase $i@{u} $i done And I do topo-sort my topics for exactly the reason mentioned. -Peff [1] https://github.com/peff/git/blob/meta/rebase -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html