Concurrent Versions System http://people.csail.mit.edu/jaffer/Docupage/cvsfiles.html

cvsfiles

Current Version Released Terms
1.2 2002-11-11 Free

The cvsfiles script outputs (one per line) the paths of the CVS-controlled files in its directory argument(s).

If one scripts or makefiles using cvsfiles, changes to CVS directories are automatically reflected in distributions. This can ameliorate the tedious task of reconciling development changes with distribution file lists.


Quick Start

Usage

Usage: cvsfiles dir1/ [...]
  Outputs a list of CVS controlled files in DIR1/ and its (their)
  subdirectories.

Applications

In tagging or packaging a distribution, there may be CVS-controlled files which are not appropriate for inclusion. This makefile excerpt shows how to exclude files with certain names or types.
tag-excludes:   makefile
        rm -f tag-excludes
        echo .\*.cvsignore >> tag-excludes
        echo .\*.[Dd][Oo][Cc] >> tag-excludes
        echo .\*.exe >> tag-excludes
        echo .\*.xls >> tag-excludes
        echo .\*OLD.\* >> tag-excludes

tags:   etags
etags:  tag-excludes
        cvsfiles ./ | grep -vf tag-excludes | etags -

zip-excludes:   makefile
        rm -f zip-excludes
        echo doc/[A-Z].\*.[Dd][Oo][Cc] >> zip-excludes
        echo tb/ram52t/TMP.\* >> zip-excludes
        echo .\*[.]ps >> zip-excludes

ZIPFILES = `cvsfiles ./ | grep -vf zip-excludes`

ZIP = sly.zip
zip:    doc/addrmap.pdf zip-excludes
        rm -f $(ZIP)
        zip $(ZIP) $(ZIPFILES)

I am a guest and not a member of the MIT Computer Science and Artificial Intelligence Laboratory.  My actions and comments do not reflect in any way on MIT.
Docupage
agj @ alum.mit.edu
Go Figure!