[cvsnt] Promoting code using Tags?

Tyler Theobald tyler.theobald.junk at cox.net
Fri Feb 20 16:37:59 GMT 2004


Hi Tim,
I've just sold my IT management on standardizing on CVS for all IT depts,
and am starting to plan the "code migration" process similiar to yours.  I
won't be using Perl however, but using our batch scheduling environment and
straight Windows 2000 batch files to accomplish this, with jobs running
automatically each night and copying files around based on tags.  My methods
will be just like yours, and I hadn't yet thought of PROTECTING certain tags
from being modified.  I assume this is done with the CVSROOT admin files,
such as taginfo, to perform the check and abort the process if needed.
The only process I've really developed with a batch file is to migrate code
to production from CVS based on a tag.  It also uses robocopy to make a
backup of files before they are replaced.
But ultimately, we want to use a full process from dev to prod similiar to
what you suggest.  I would be interested in collaborating with you on this
process, unless you feel my lack of Perl wouldn't benefit you.  Feel free to
email me at tyler<dot>a<dot>theobald at nngco.com, where <dot> = ".", to get
together.
Thanks!
(actually, I'm having to get into Perl trying to get Codestriker working -
Maybe we could use it for our CVS processes too)

"Williams, Tim" <WilliamsTim at PRAIntl.com> wrote in message
news:mailman.441.1077228155.472.cvsnt at cvsnt.org...
> Hi folks,
>
>   I am trying to develop a process for our programmers that uses tags to
> promote code as it evolves from development to a production release.   I
am
> currently using a Perl script called from taginfo to restrict tag names to
a
> specified naming convention and to prevent the move or delete of certain
tag
> names.  I am hoping to expand the functionality of this script as
described
> below.
>
> Here is an example scenario:
>
>   A new program is started in the project and development moves through a
> series of revisions until it is ready for a Quality Assessment.  The
> programmer marks their code with a tag called "TEST" to signify that it is
> ready for this testing.
>
>   A second programmer evaluates the program. If the evaluation is
> successful, they apply the tag "QA" to signify that the code has passed a
> quality assessment.
>
>   If corrections are needed to the program after its original QA, a new
> revision is committed with these changes and the new revision goes through
> the "TEST" and "QA" cycle again as the changes are tested and approved.
>
>   Implication:  tags "TEST" and "QA" can be deleted and moved.
>
> As the project approaches the first release, more and more files reach the
> QA status.  Once all programs have been tagged with "QA", the lead
> programmer promotes all code to the first release by assigning a new,
> immutable branch tag to all the programs. Lets call it "RELEASE_1_0_0".  I
> force tags that start with "RELEASE_" to be immutable (no move, delete, or
> rename) in my Perl Script.
>
> At this point I would like my Perl script to only allow the "RELEASE_..."
> tag to be applied to revisions  that already contain the "QA" tag (we do
not
> want to release code that has not been evaluated).   I assume I would have
> to execute the status -v command on each file that I am trying to tag,
query
> the result and only proceed if QA is among the tags on that revision.
Does
> anyone have an example of how I could do this in my Perl script?
>
> Perhaps a larger question is whether or not this a good way to promote
code
> from development, through validation and release?
>
> Thanks in advance for any advice you may have.
>
> Tim
>
>
> Tim Williams
> SAS Systems Administrator
> PRA International
> Charlottesville, VA
> USA
>
>
>





More information about the cvsnt mailing list