Since Thomas is talking about branches, I thought I would forward this advice I received off-list.  I think it makes a lot of sense:

On Nov 2, 2006, at 9:00 AM, Jonas Bülow wrote:

Hi,

I have some 8 years of using CVS for 40-50 modules. As I understand you understand it is of great importance to have a good policy working with branches in CVS.

My principles for branches (shared by many others) can be summarized as:

- set a ordinary tag on the branch point, name it BRANCHED_VX_Y
- create a branch on the branchtag, call if BRANCH_VX_Y

Now, when you want to find what has happend on your branch you can diff from the branch point to the branch head by doing

cvs diff -r BRANCHED_VX_Y -r BRANCH_VX_Y

Many people forget to create a tag where the branch is created which makes it hard to syncronize between branches.

VX_Y is a symbol for the prefix of the version, i.e V0_39. V0_39_1 is then a tag on the branch.

Main development is performed on the main trunk. I.e with the above example there are no tags starting with V0_39 on the main trunk after the tag BRANCHED_V0_39. The first tag should be an increment, e.g V0_40 or higher.

CVS is not very user friendly doing merges between branches. The first merge beteen branches is simple, just use the BRANCHED_VX_Y-tag. merging the work on the branch BRANCH_VX_Y to HEAD (symbolic name for main trunk) by doing "cvs update -j BRANCHED_V0_39 -j V0_39_1" in HEAD.

If you do incremental merges from one branch to another you need to manually keep track of points of merge. A good habit is to tag these point as MERGED_FROM_xxx on the target and MERGED_TO_xxx on the source. The next time you to a merge you use one of these tags to refere to from  where the merge should be done.

Hans-Christoph Steiner wrote:
On Oct 30, 2006, at 3:24 PM, IOhannes m zmölnig wrote:
Hans-Christoph Steiner wrote:
Anyone have any good advice on making a branch in CVS? Or perhaps a good HOWTO?  Its time to make a branch for the Pd-0.39.2-extended release.

what is your exact problem?

how does "cvs tag -b extended_0_39_2" (within the cvsroot) not fit your needs?


btw, googling for "cvs tag"  returned http://www.psc.edu/~semke/cvs_branches.html as the second hit (the first one was a dead link)

there is no magic involved in tagging.

btw, i thought someone mentioned a "best practice CVS" document a while ago ;-)
I know tagging, that's dead simple.  I am talking about a branch.  I can google "cvs tag" or "cvs branch" myself too, but a personal recommendation is worth a lot more than a google search.
I am more interested in experience in managing changes in the branch.  Some changes should get folded in to MAIN, others are only for the branch.  I am sure there are things that you can do that will make your life easier when the time to merge comes.
.hc
------------------------------------------------------------------------
All information should be free.  - the hacker ethic
_______________________________________________
PD-dev mailing list
PD-dev@iem.at
http://lists.puredata.info/listinfo/pd-dev
<jonas.bulow.vcf>


------------------------------------------------------------------------

                                              http://at.or.at/hans/