Most developers use CVS tags to help with merging. Some use a single tag
convention while other use a 2 tag convention. Typically a single tag convention is
where a a tag is placed on the revision where the last merge was completed. Because CVS
does not store merge history, this is needed to remember where the last merge was complete so
that any subsequent merges can continue where it was left off last time. Therefore the
merge is performed from the tag to the last revision in the source branch.
Typically a 2 tag convention is used where a BEFORE tag and an AFTER tag is used.
A merge occurs by first moving the BEFORE tag to the desired final revision in the
source branch. This is usually the last revision in the source branch (as in the single
tag convention). The AFTER tag remains on where the last merge was completed.
Then the merge is performed from the AFTER tag to the BEFORE tag. Once the
merge is completed, the AFTER tag is then moved down to the BEFORE tag. One
advantage of having the BEFORE tag is to allow a full repository merge WHILE developers
are still checking in code on the source branch. The BEFORE tag will not move as
developers checkin new revisions on the source branch such that the merge process (sometimes
taking a while to review merge changes and resolving conflicts) will not become a moving
target.
The naming convention is used in the Move Merge Tags operation from within the revision
graph window. The supported wildcards are:
Wildcard
|
Definition
|
$T
|
Represents the word AFTER or BEFORE (in a 2 tag merging convention only)
|
$S
|
Represents the source branch name
|
$D
|
Represents the destination branch name
|