From: Michael Caisse (boost_at_[hidden])
Date: 2007-08-27 00:47:04
Frank Birbacher wrote:
> Michael Caisse schrieb:
>> cd <your new checkout of the boost trunk>
>> cd boost/system
>> svn switch https://svn.boost.org/svn/boost/branches/libs/system/caisse/boost_system
>> cd ../../libs/system
>> svn switch https://svn.boost.org/svn/boost/branches/libs/system/caisse/libs_system
> This way you won't keep track of which revision of the trunk you used
> for developing your branch. I figured that one out when thinking about
That is correct. I have done it both ways. I am making the following assumptions:
1. You will need to merge your changes back to the trunk
2. You are responsible for making sure the trunk works after your merge
3. Changes to the trunk that happen before your merge are your problem (as in
a dependency change).
4. You are the only one making changes to a particular library.
I believe #1, #2 and #3 are consistent with the Improving Practices wiki page.
#4 is a simplification; however, it seems to be how boost libraries are maintained.
Creating a "full" branch copy (svn copy .../trunk .../branches/whatever) is
more useful if you expect changes to be occurring in the same areas your are working.
It is also useful if you expect lots of changes to be occurring to dependencies
and you want to hand pick modifications for a merge into your branch.
> which previous states of your branch and the trunk will work?
I typically don't care.... in-as-much that I have to merge with the existing trunk
and that result needs to work. I follow this procedure:
1. make changes to code
2. have a checkpoint that does something (not unnecessarily complete)
3. "svn update" so that I'm current with the trunk (noting the dependencies
that might have changed)
4. verify that my checkpoint still behaves properly
5. repeat starting at 1 until my changes are complete
> Which ones
> did you use? Did you create a mixed trunk/branch tag for this purpose?
> So why not directly work on a full copy instead of mixing trunk and branch?
I create a mix because keeping track of which changeset I branched at, which changeset
I merged last and what is the mixture I have going is just too much to worry about in
most cases. I get more done by not worrying about it and keeping everything else in sync
with the trunk through the simple "svn update" command. At the end of the day my changes
have to work with the trunk anyhow, and I don't have to worry about
svn merge path_at_what_was_that_version being wrong and causing more work for myself
because I used the wrong changeset.
If things are more complicated (lots of maintainers on one lib working at the same time),
which I don't think happens in boost from what I can tell, then full branches with the
extra bookkeeping often becomes a necessity.
-- ---------------------------------- Michael Caisse Object Modeling Designs www.objectmodelingdesigns.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk