CVSClone is a cloning utility that can replicate CVS repositories via the cvspserver interface.
For instance, you cannot enable compression with this utility. Additionally, there is an issue with reading cvs password from $HOME/.cvspass as it uses CVSROOT in a case sensitive way. The rlog format is another potential problem area, as it can be ambiguous. If separators found within log messages are followed by lines resembling what rlog outputs, then things can go horribly wrong. Furthermore, the rcs 5.x rlog format does not contain the comment leader. It is not even guessed according to the extension as rcs does, but set to "# ".
The program uses normal diff format since it is the easiest one to work with. The diff --rcs format is problematic since files without a newline at the last line are not output correctly. Another issue is that deleted lines are transferred unnecessarily, which can be a major drawback. Additionally, rdiff has major problems with lines that contain, because of a bug in cvs. "Cvsclone" does not work incrementally, which means it takes considerable effort to update the trunk since the most recent revision must be reconstructed. The entire history then has to be transferred again, along with all log messages.
The downside of "cvsclone" is that it is quite complex. A file with n deltas takes O(n^2) to transfer, which can put extreme pressure on the server, taking up all processor time. Therefore, it is not recommended for public cvs servers, especially if you need to run it on a regular basis. However, you may find it useful for salvaging archive files from projects that only allow anonymous cvs access. The scanner is not optimal, and its optimization for no-backup needs means later additions have not been addressed. Hence, some parts could be removed, such as included, excluded, etc., or improved with trailing context instead of the complicated complemental regex. Patches and comments are welcome.
Version 0.00: N/A