Previous: Using Automake and Swbis, Up: Top



8 Using CVS and Swbis

This section describes how to use swbis to place GPG signatures into a source code management repository such as CVS. The application of swbis simply involves adding the ./catalog/ directory and its contents to the repository and is not specific to any particular SCM. The files in the ./catalog/ directory are either directories or ascii text regular files.

The first step is to perfectly sync-up with the repository. Empty directories should be removed and created on the fly by the Makefiles. Stray junk files in the working directory and repository need to be deleted from both. Failure to do this will result in failed verification although the partial success can still be useful. (Also the RCS style file Id's used by CVS may interfere the verification of the file digests.)

Step two is to initialize, add, and commit the ./catalog/ directory in the top level module. Just make the regular files empty for now. The order does not matter. The files are:

     catalog/
     catalog/INDEX
     catalog/dfiles/
     catalog/dfiles/INFO
     catalog/dfiles/checkdigest
     catalog/dfiles/md5sum
     catalog/dfiles/sha1sum
     catalog/dfiles/adjunct_md5sum
     catalog/dfiles/files
     catalog/dfiles/sig_header
     catalog/dfiles/signature
     catalog/pfiles/
     catalog/pfiles/INFO
     catalog/INFO

Next, checkout the ./catalog/ directory. Treat it just like any other directory except you will be using the swign command to generate its contents. Then at any point of your choosing sign your working directory by running swign and then commit all of your changes to the repository including the ./catalog/ directory.

Here's how to sign:

     make distclean;
     SWPACKAGEPASSFD=agent; GNUPGNAME="Your Name"  swign --name-version=module_name-1.2.3 -s PSF.in --no-remove @.

This swign invocation will only alter files in ./catalog/.

Note that the --no-remove option is required as this prevents the SCM control files from being deleted. Also, the --name-version option is required.

The PSF.in file has several specializatons. The %__tag and %__revision macros must be used and the exclude directive must exclude the SCM's working directory control files. The PSF.in file must also specify a checkdigest script as this is required to verify the directory form of a package. The checkdigest.sh file from swbis version 0.496 is a working example of this script.

Next, you should tag this point so it can retrieved in the future. Now, export (to exclude the SCM's control files) the module to a new directory and run swverify with the --scm option (The swverify version must be at least 0.496).

     cvs export -r your_tag_name module_name
     cd module_name
     swverify -d --scm @.

That's it.