< 上一个 | 内容 | 下一个 >

Background: CVS and Timestamps

Unless you use CVS keywords (in which case files must be updated at commit time), CVS preserves timestamp during ‘cvs commit’ and ‘cvs import -d’ operations.

When you check out a file using ‘cvs checkout’ its timestamp is set to that of the revision that is being checked out.

However, during cvs update, files will have the date of the update, not the original timestamp of this revision. This is meant to make sure that make notices sources files have been updated.

This timestamp shift is troublesome when both sources and generated files are kept under CVS. Because CVS processes files in lexical order, ‘configure.ac’ will appear newer than ‘configure’ after a cvs update that updates both files, even if ‘configure’ was newer than ‘configure.ac’ when it was checked in. Calling make will then trigger a spurious rebuild of ‘configure’.