Boost logo

Boost :

From: Michael Caisse (boost_at_[hidden])
Date: 2007-08-26 16:43:36


Peter Dimov wrote:
>
> I for one did, thanks for that. But... what a pain! How do people manage to
> get work done at all? Isn't there a more streamlined way to do
>
> 1. Create branch
> 2. Work
> 3. Merge from trunk
> 4. Work
> 5. Merge from trunk
> 6. Test branch
> 7. Merge to trunk
>
> without remembering repository paths and revisions? I think that SVK can do
> this, but last I read about it, its Windows stability was being called into
> question.
>

I believe that the "streamlined" way is what I described in
http://article.gmane.org/gmane.comp.lib.boost.devel/164321 .

I suspect that if there are N svn users that are at least N+1 preferred ways
of doing something. I find Sebastian's method (though correct for the general
case) more complicated than is normally required.

For projects where there is a small number of developers for a component (often
one maintainer for a lib in boost), then checking out the trunk and simply
switching the directories of interest to a working branch simplifies the merge from
trunk operation... it is just an "snv update" command. Granted, if you are working
on a set of sources at the same time as another developer, you will need to merge
your branch with the trunk changes... but I find this to happen less often than
the more general case and can still be performed with only switching
work areas from the trunk checkout to a branch.

And so to complete my previous post with the "trivial merge operation" commands
(see post for details of steps 1-4):

 1. Clean trunk checkout.
 2. Copy directories within svn (branch)
 3. Switch working directories.
 4. Work, merge from trunk, work, merge from trunk....
 5. Complete work and merge back to trunk (completing use case from previous post)

   cd <working trunk directory>/boost/system

   svn switch https://svn.boost.org/svn/boost/trunk/boost/system <https://svn.boost.org/svn/boost/branches/libs/system/caisse/boost_system>
     Updated to revision XX. <-- svn tells you the revision that you are now at

   svn merge https://svn.boost.org/svn/boost/trunk/boost/system@XX
             https://svn.boost.org/svn/boost/branches/libs/system/caisse/boost_system@XX .

   cd ../../libs/system

   svn switch https://svn.boost.org/svn/boost/trunk/libs/system <https://svn.boost.org/svn/boost/branches/libs/system/caisse/boost_system>
     Updated to revision YY. <-- svn tells you the revision that you are now at

   svn merge https://svn.boost.org/svn/boost/trunk/libs/system@YY
             https://svn.boost.org/svn/boost/branches/libs/system/caisse/libs_system@YY .

   svn commit -m "committing changes from caisse system branch to trunk, fixing some problem."

What I like about this method is I don't have to remember versions for the merge. More work
is still required if somebody else has made changes to "system". In that case, the
resulting merge will contain potentially unexpected results if I hadn't been paying
attention. The merge will still take care of combining the changes, but it may have been
later than I wanted and now I have some more work to do before the commit.
 
I hope this is useful is some way. Please let me know if I'm missing the point.

Best Regards -
Michael

-- 
----------------------------------
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