David Christensen dpchrist at
Thu Sep 29 03:38:30 UTC 2016

On 09/28/2016 06:06 PM, Doug Hardie wrote:
> I am using cvs for a number of projects and have been digging through the documentation, but not figuring out how to do what I need.  There are multiple files in each project.  All are entered into cvs and are updated fairly often.  Some of the revision numbers are over 100.  All I have done is commits to the files so far.  
> I need to be able to identify the files in a specific version.  For example on some date, I need to say all the current files belong to version x.  Later another version x+1 and so forth.  I also need to be able to pull out all the file from version x.  I suspect there is an easy way to do this, but it has escaped me so far.

CVS manages revision numbers on individual files.  Some version control
systems manage version numbers on sets of files (Git, Mercurial?).
Still others number both individual files and sets of files (MKS SI).

But, CVS provides "tags" for working with sets of files:

    info cvs

    cvs --help tag

You can see the tags on a particular file with:

    cvs log FILENAME

When I want to create a release of one of my projects, say revision
1.108, I check in all the files and then run:

    cvs tag -c r1_108

This applies the tag "r1_108" to the current revision of the files in
the working set.  (The -c option ensures that they are checked in, to
reduce operator errors.)

If I later want to check out all the files from a particular release:

    cvs co -r r1_108

(Note that CVS will mark the files as "sticky", which adds complexities
I avoid by not editing them.)

CVS also has the ability to check out files by date, but I have never
tried that.  If your files don't have tags, perhaps you can check them
out by date and then add tags.  Be sure to back up your CVS repository
before mucking about.


p.s. I learned CVS from an earlier version of this book.  The current
edition (3 e.) is available as a PDF download:

More information about the freebsd-questions mailing list