Our company recently began creating CVS branches to mark each release. Formerly we had been using tags, and if we fixed something during the testing period that needed to go out with the release, we simply moved the tag forward. This works well until two changes are made to the same file: one that should be released and the other that shouldn’t. Now we need to apply the same change to both the head and the release branch.
I’m using Eclipse’s CVS plugin to interact with CVS. When I look at a file’s history, I see a i20090529Release tag in the Tags section (in this case on revision 1.30 of the file), and when I “Show Tag Viewer” within the History view, the icon indicates that this is a Branch tag, as opposed to a Version tag. When I look at revisions that have been committed since the Branch occurs I see that the next revision made to the head becomes version 1.31, and the next revision made to the branch becomes version 1.30.2.1. My question is, why does the i20090529Release tag stay with version 1.30 of the file, which is not the most recent revision on the i20090529 branch? Is this really even a bona-fide “tag,” or is it more of a conceptual idea that the branch began branching off at this point? I notice I can’t apply this tag to any other revision of the file. Why does it appear in the Tags column at all?
Thanks in advance for any clarification you can provide.
It’s the idea that the branch began branching off at that point.
A branch is a set of versions that branch off the main trunk at some point, and maintain their own independent development (which may of course be closely coordinated). It isn’t a set of changes that will be automatically applied to later versions.
It’s not a tag in the usual sense: if you check out according to a tag, you’ll get a snapshot of the source tree at the time the tag was made, while the results of checking out according to a branch will vary over time, as changes are made to the branch. It is similar to a tag, and does work in much the same way; CVS uses the old RCS file format, and uses RCS tags both for branches and CVS tags.
There’s several good references for CVS. Read up on tags and branches.