[cvsnt] Combining a tag which contains all files with a tag which only contains a subset
arthur.barrett at march-hare.com
Wed Aug 29 22:29:38 BST 2007
This is a topic we covered with the onsite training last year. Please re-read the eBook section on promotion models - what you have described is exactly what promotion models solves.
A quick overview of promotion models follows that all may be interested in. Our eBook is the primary reference for this (which is not open source, but can be purchased from the web site as a part of CVS Suite).
Instead of "tagging" the files with rel_c1234567 you have a branch called "promote_release" which has an ACL on it to only allow your QA staff to make changes, also all the files on this "branch" (promotion level) are "-ko".
Now the QA staff "promote" the work on the trunk to "promote_release" (cvs up -j HEAD .) and then commit it and tag it with "RC1" (or whatever) and alias the tag rel_c1234567 to RC1 (cvs tag -A -r RC1 rel_c1234567 .).
A bug fix is done on the trunk and committed with a bug id. Note: the cvs suite server you put into production allows you to automatically translate a message such as "bug 123" to a "real" bug id that is stored in the RCS file, check /etc/cvsnt/PServer.example for instructions.
Let's say the bug fix was 123.
Now the QA staff "promote" the bug 123 on the trunk to "promote_release" (cvs up -j HEAD -B 123 .), and then commit it with "cvs ci -B 123" and tag it with "RC2" (or whatever) and alias the tag rel_c1234567 to RC2 (cvs tag -F -A -r RC2 rel_c1234567 .).
Of course it is typcial to have more promotion levels that just "release", eg: build, review, function test, integration test, release/acceptance test.
Please contact support for questions specifically about the eBook documentation.
From: Harding, Jonathan [mailto:jonathan.harding at wachovia.com]
Sent: Thu 8/30/2007 6:02 AM
Cc: FIRE-CVS; cvsnt at cvsnt.org
Subject: Combining a tag which contains all files with a tag which only contains a subset
I am attempting to document the procedure for preparing a CVS sandbox
which can be used to produce a build for a patch release.
Example: I have a repository with 3 files.
I have applied a tag to all of these files names rel_c1234567
After the release went into production, a bug was found which required a
modification to file2.txt. The developer modified file2.txt and tagged
with with the name patch_change.
How can I combine the production tag with this new tag which only
contains this one modified file?
This will extract my current production files:
cvs co -r rel_c1234567 1dev
cvsnt server: Updating 1dev
I would then expect to be able to cd into the 1dev directory and execute
a cvs up -r patch_change and pull in only file3.txt, but that isn't the
case. This is what I see:
$ cvs up -r patch_change
cvsnt server: Updating .
cvsnt server: file1.txt is no longer in the repository
cvsnt server: file2.txt is no longer in the repository
It removed the other files.
What am I doing wrong? Is this even possible without checking the
repositories out separately and combining them using OS specific
commands like cp ?
Assistant Vice President and
More information about the cvsnt