Information Technology Reference
In-Depth Information
not just individual files, which may be on different versions at any
given point.
For example, consider the files Foo.cs and Bar.cs in a repository,
each on a different release version of your software (4.5 and 8.3,
respectively). Both are related as one package, however, when they are
grouped as a part of a repository label. As shown in Figure 8-2, 3_78
labels both Foo.cs (version 4.5) and Bar.cs (version 8.3) as belonging
together.
Labeling repository versions is paramount in a disciplined soft-
ware process, as it enables a smooth transition to newer versions of
code by creating snapshots in time. These snapshots serve as a base for
reporting—and in worst-case scenarios, rollbacks. These labels also
allow parallel branches within a version control system, creating the
capability to handle multiple development lines. The following dem-
onstrates tagging a build for a particular release:
cvs -d:pserver:uname:passwd@cvs.ib.com:/cvsrepo rtag release_9 website
For example, having parallel branches with labels facilitates “bug
fix” releases. If customers are using an application that was built off
label 3_78 and the development team is working on a mainline (or
trunk , the very latest version of any file in the CM system) of the
repository, producing a point release from the trunk with bug fixes is
risky, because there could be new features in this newer code or, even
worse, new undiscovered defects. But by working off the 3_78 label,
developers can add the required fixes and produce a stable build that
doesn't necessarily contain new features that exist on the trunk.
Once a release has been labeled, generating that same release
becomes quite simple. For example, via Ant, you can check out a
labeled group of assets from CVS by specifying the label identifier
(see Listing 8-1).
Checking Out a Labeled Version from CVS
LISTING 8-1
<cvs
cvsRoot=":pserver:${cvs.usern}:${cvs.passw}@${cvs.server.hostname}:
${cvs.server.path}" package="${cvs.module}" tag="${cvs.tag.id}"
dest="${cvs.module.dest}" command="checkout" />
Search WWH ::




Custom Search