A bit of discussion on the dev list came up with the following naming convention for CVS Tags.

Branch Roots

When creating a branch, you should tag the trunk from which the branch was created. This is known as the root of the branch. Tags used to represent branch roots should start with the word ROOT- followed by the version number.
Suggest that Branch Roots are only created once the RC phase has been completed.

For the version 1.9 branch, the root would be tagged with:

  • cvs tag ROOT-1-9

Branch Tags

Tags used with CVS branches should start with the word BRANCH- followed by the version number that the branch represents. A branch tag always represents the HEAD of the branch.
Suggest that branches are only created once the RC phase has been completed.

The branch for version 1.9 would be tagged with

  • cvs tag -r ROOT-1-9 -b BRANCH-1-9

Release Tags

Tags used to represent a release should start with the word REL- followed by the release number and sub-version counter.
This tag can represent a release candidate or subsequent bug fixes to the release. Release tags should always be part of the appropriate branch.

Releases should be tagged as

  • for inital 1.9 version
    • REL-1-9
  • for followed bugfix version 1.9.1
    • REL-1-9-1
  • etc...
    • REL-1-9-2

Release candidates just append numbered -RC suffix like this:

  • REL-1-9-RC1
  • REL-1-9-RC2
  • REL-1-8-RC1

RC tags should be applied to the main trunk. A branch should be created once the RC phase is complete.


Merges are generally used to bring changes made in a branch back into the main trunk. It seems that before Tikiwiki developers used to tag a merge point using the word MERGE- followed by the two tags being merged separated by -to-. Now this tag seems to be used on HEAD to indicate last merge (?) and on BRANCH-1-9 we use shorter MERGE-1-9-HEAD instead.

Here's a worked example(UN-VERIFIED) to merge the latest changes in the 1.9 branch with the current HEAD. It assumes that the previous merge on this branch will be tagged as MERGE-1-9-HEAD.

  • Tag the most recent version of BRANCH-1-9 (to prevent a race condition during merge)
    cvs tag -r BRANCH-1-9 -F BRANCH-1-9-HEAD
  • Switch to HEAD
    cvs up -AdP
  • On first merge: Merge in changes that happened in BRANCH-1-9 between ROOT-1-9(the default) and BRANCH-1-9-HEAD
    cvs up -dkk -j ROOT-1-9 -j BRANCH-1-9-HEAD
  • On subsequent merges: Merge in changes that happened in BRANCH-1-9 between tag MERGE-1-9-HEAD and BRANCH-1-9-HEAD
    cvs up -dkk -j MERGE-1-9-HEAD -j BRANCH-1-9-HEAD
  • Move the merge tag to last version of BRANCH-1-9 i.e. BRANCH-1-9-HEAD
    cvs tag -r BRANCH-1-9-HEAD -F MERGE-1-9-HEAD

Race condition during merge has been fixed (by using BRANCH-1-9-HEAD), but this doesnt stop two developers trying to merge at the same time...

You can also see some more detailed example of CVS merging.

Experimental Branches

The tagname should start with EXP followed by a topic. Please list the experimental branches in CvsExperimentalBranches and describe how you created them. And please try to ask tiki a tiki cvs admin (mose, redflo) before you create a branch.

Page last modified on Tuesday 21 August 2007 14:36:52 GMT-0000