in reply to Handling production code with source control, any better ideas?
Honestly, this is what branching is for, however branching (especially the merge back) in CVS is so cantankerous that pretty much everyone I know does their own branching rather than using the "automated" branching in cvs.
IMO, one thing you might try is creating two tags, one as a snapshot tag associated with a date, the other being a sort of production tag that would be force-updated.
The problem with that solution is that at some point you still have to worry about what your head revision really is... and I haven't thought that far ahead.
Also, since the CVS repository, itself, is so easy to manipulate... I've also created my own snapshot of the repository itself, by just wholesale copying it into a different repository name. If you don't care about diskspace, and don't do it too often, that might be the easiest solution.