One of the pepertual problems of CVS is that it doesn’t allow for versioned copies of files from one place to another while preserving important history/blame data. This has traditionally been solved in Mozilla by performing copies of the RCS files on the CVS server. This is not an ideal solution for various reasons, but most painfully because it requires the physical presence of a CVS sysadmin, whose time is at a premium.
In a previous life, Schrep wrote a script that would emulate a server-side CVS copy using only client-side commands: each revision of the old file would be incrementally committed to the new location with information about the original commit time/date/author. Unfortunately, that script got lost in the sands of time: fortunately, I have found time to recreate the script. It is now possible to perform cvs copies entirely from the client side, without any special CVS permission.
The script takes as input a .cvsmoves file, of the form Mozilla already uses for server-side copies. See this attachment for the real-world example that I was using for testing.
This script is STILL BETA, and MOSTLY UNTESTED. Please don’t use it in real-world situations yet without testing the process very thoroughly first!