Automatic insertion of CVS logs(using the cvs $Log tag) into a code module is a GreyPattern
It helps view changes, but violates DontRepeatYourself.
I don't think it violates OnceAndOnlyOnce. As far as I'm concerned, OAOO is just about code. You might want to take a look at DontRepeatYourself, which has wider applicability. Having CVS logs in the module doesn't violate DontRepeatYourself as long as the logs are automatically inserted. -- JohannesGijsbersAndrewHunt and DavidThomas claim in ThePragmaticProgrammer that automatic insertion is a bad idea, but don't specify why, other than to say, "This is what source code control systems are for.... However, it can be useful to include information on the date of last change and the person who made it." It seems that they're referring to OnceAndOnlyOnce (or, as they state it, DontRepeatYourself), as the next admonition is to avoid adding a list of files referenced in the code module, since "[t]his can be determined more accurately using automatic tools".
Could someone please post the page where this is discussed in ThePragmaticProgrammer?
I work at a company where we provide our source code to our distributors as they often provide custom solutions to their customers. These distributors do not have access to our source control system. Last year we took out the change information from the headers of the source-code. It was less than a month before our distributors were falling over themselves because they no longer knew why all the changes occurred.
I'd hazard to suggest that the rule should be "Any source distributed to people without access to the version control system requires change information in the sourcecode, otherwise it's just clouding the code".
Would the exception be if a tool pulled that automatically from CVS, generated a report, and that was what was given to the customer?