Merging CLAM development branch to the main branch

Previous situation

The CLAM CVS module has two significative branches:

Supose that the last CLAM version was 0.4.3 and we are going to release 0.5.0. So it is suposed to be some tags from the previous release:

Checking a sane previous release

Maybe the previous situation doesn't fit the sane environment described above. You should confirm it.

Preparing the files

Check on the development-branch that the versions numbers on the following files are updated for the coming release:

Freezing the development branch

Fixing freeze bugs

Warning: changes on the CLAM-devel-pre1 sandbox can't be commited because it has a sticky tag on CLAM-devel-0_5_0-pre1-rel. If you find bugs you should fix them on your own development sandbox.

Merging devel changes into main

Replacing full files instead merging changes

Sometimes a merge like the one above, is not safe when:

On those cases a replacement style merge is safest.

Rationale

Why not moving a single tag in each branch?

Because errors on tagging and moving tags are very common and, when they happen, you lose any reference to that point. So we use fixed points and one sliding point.

Too much tags, how can i get ride of them?

pre-rel tags are useless. Once you have released you can remove them from the cvs by doing:
$ cvs rtag -da TheTagToBeRemoved CLAM

Why the -a option?

It is needed in order to cope with deleted and added files.

Why rtag and not tag?

rtag, tags also deleted files so you can do safest diffs and merges between tags with different files. tag only sees the files on the current sandbox. Moreover, you don't need to to checkout any sandbox to do an rtag.

tag is useful to move tags for concrete files but use it on your own, only on concrete files (not on directories) and only when the only have been modified (not removed nor added). You have been warned.

Why rdiff and not diff

diff cvs subcommand has similar problems that tag has. It does not work with files that are not checked out, so it gives problems working with tags.

So use diff only to diff the version of a concrete file you checked out and the same file on the repository.