Personal tools
You are here: Home documentation developer Branching Howto

Started with comments from Jonas Bülow:

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

  • set an ordinary tag on the branch point, name it branched-vX-Y-Z

  • create a branch on the branchtag, call it branch-vX-Y-Z

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-Z -r branch-vX-Y-Z

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 the most recent part of the 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 habbit is to tag these point as MERGED_FROM_xxx on the target and MERGED_TO_xxx on the source. The next time you do a merge you use one of these tags to refere to from where the merge should be done.

Powered by IEM Powered by Plone Section 508 WCAG Valid XHTML Valid CSS Usable in any browser