- publishing free software manuals
Version Management with CVS - the CVS manual
by Per Cederqvist et al.
Paperback (6"x9"), 216 pages, 8 figures
ISBN 0954161718
RRP £19.95 ($29.95)

Get a printed copy>>>

13.2 Updating with the import command

When a new release of the source arrives, you import it into the repository with the same import command that you used to set up the repository in the first place. The only difference is that you specify a different release tag this time:

$ tar xfz wdiff-0.05.tar.gz
$ cd wdiff-0.05
$ cvs import -m "Import of FSF v. 0.05" fsf/wdiff
   FSF_DIST WDIFF_0_05

@BF{WARNING: If you use a release tag that already exists in one of the repository archives, files removed by an import may not be detected.}

For files that have not been modified locally, the newly created revision becomes the head revision. If you have made local changes, import will warn you that you must merge the changes into the main trunk, and tell you to use ‘checkout -j’ to do so:

$ cvs checkout -jFSF_DIST:yesterday -jFSF_DIST wdiff

The above command will check out the latest revision of ‘wdiff’, merging the changes made on the vendor branch ‘FSF_DIST’ since yesterday into the working copy. If any conflicts arise during the merge they should be resolved in the normal way (see section 10.3 Conflicts example). Then, the modified files may be committed.

However, it is much better to use the two release tags rather than using a date on the branch as suggested above:

$ cvs checkout -jWDIFF_0_04 -jWDIFF_0_05 wdiff

The reason this is better is that using a date, as suggested above, assumes that you do not import more than one release of a product per day. More importantly, using the release tags allows CVS to detect files that were removed between the two vendor releases and mark them for removal. Since import has no way to detect removed files, you should do a merge like this even if import doesn't tell you to.

ISBN 0954161718Version Management with CVS - the CVS manualSee the print edition