Merges are generally used to bring changes made in a branch back into the main trunk. Tag a merge point using the word MERGE- followed by the two tags being merged separated by -to-.
Heres a worked example(UN-VERIFIED) to merge the latest changes in the 1.7 branch with the current HEAD. It assumes that the previous merge on this branch will be tagged as MERGE-BRANCH-1-7-to-HEAD.
* Tag the head of BRANCH-1-7(to prevent a race condition during merge)
cvs tag -r BRANCH-1-7 -F BRANCH-1-7-HEAD
* Switch to HEAD
cvs up -AdP
* On first merge: Merge in changes that happened in BRANCH-1-7 between ROOT-1-7(the default) and BRANCH-1-7-HEAD
cvs up -dkk -j ROOT-1-7 -j BRANCH-1-7-HEAD
* On subsequent merges: Merge in changes that happened in BRANCH-1-7 between tag MERGE-BRANCH-1-7-to-HEAD and BRANCH-1-7-HEAD
cvs up -dkk -j MERGE-BRANCH-1-7-to-HEAD -j BRANCH-1-7-HEAD
* Move the merge tag to head of BRANCH-1-7 i.e. BRANCH-1-7-HEAD
cvs tag -r BRANCH-1-7-HEAD -F MERGE-BRANCH-1-7-to-HEAD
Race condition during merge has been fixed(by using BRANCH-1-7-HEAD), but this doesnt stop two developers trying to merge at the same time...