Copying extra revisions in sprout

Martin Pool mbp at canonical.com
Wed Oct 3 03:31:45 BST 2007


I think having branches identified by urls is very good and we should
keep it.  That's slightly distinct from having branches identified with
filesystem directories, so that you can move them using filesystem
tools.  So for example you could (just as a straw man) have 
http://host/~/path/+thread/something where the bzrdir is located in
~/path and the threads are logically within that.

What people seem to want is 

 - a way to carry around (push and pull) a set of related branches
 - tool support to help you remember the right order in which  
   things get stacked up and merged

These can be solved independently of whether you want to work with a
single tree that switches around, or multiple trees.  A single tree does
make it more straightforward to preserve uncommitted changes when you
move up or down the stack.

Aside from packaging, an example for moving multiple branches is: I 
have a ~/bzr directory on several machines, which contains a similar set
of branches.  Currently I push or pull each one when I start or finish
working on it, but really I generally want to keep the whole thing in sync.

There are some subtleties, including:

 - if I remove a branch, how does that propagate?
 - if a merge is needed, or there's a conflict with a workingtree, what
   should happen?

And this is a bit like tagging, and maybe should be unified with that.

There are several options for moving related branches:

 - listing a directory and finding all branches within it
 - having multiple threads stored within the bzrdir
 - having references to branch directories within the bzrdir
 - recording a set of branches in your user configuration
 - ... and probably several more

The first option seems to involve the least model change.  It does mean
listing the directory and probing to see which of them are branches,
which is potentially expensive.

-- 
Martin



More information about the bazaar mailing list