Re: [DESIGN] mtime versioning - was: Getting Bug 1256 fixed

Ryan Schmidt <[email protected]> Sun, 27 Nov 2005 21:03:15 +0100
Newsgroups gmane.comp.version-control.subversion.devel,gmane.mail.eyebrowse.user
Message-ID <D485113B-0645-45FC-8A9A-F0BA0EF9AD2A__42612.0450524197$1133124995$gmane$org@ryandesign.com>
On Nov 27, 2005, at 19:23, Malcolm Rowe wrote:

> On Wed, Nov 23, 2005 at 07:11:45AM +0100, Ph. Marek wrote:
>
>> What is wanted?
>> - To save the (modification-) timestamp for each committed file, and
>>   to restore them.
>
> It might be useful to include a brief note on why this requirement  
> exists
> in the first place: what need or use case isn't being fulfilled by the
> current functionality?

People on this list are constantly going on about how a version  
control system's job is to accept and archive data thrown at it, not  
to change it. This is presented as an argument against many user  
suggestions—for example, the ability to have a post-commit hook do  
automated syntax formatting on committed source code files. The  
rationale is that the system should not store a modified version of  
what the user commits; it should store exactly what the user commits.  
The same argument should be applied to metadata such as the  
modification date.

Suppose we have a programmer Joe who can't write any decent code  
before 10 AM when he has his second cup of coffee. Suppose he writes  
some code before 10, some other code after 10, and commits everything  
together at 11. The commit time is 11, and when checked out (with use- 
commit-times on) the modification time of the files is also 11.  
Suppose we are looking at the code now and wondering if it is  
correct. If we could see the time at which the files were actually  
modified, we would be better-able to decide which files might be  
suspect.

A less-contrived example would be importing an old project into a new  
repository. All files in the project will allegedly be modified at  
the commit time, when in fact the project may have been last modified  
years. The act of importing the project in effect deletes the history  
of the project, and someone who later looks at the project will think  
it's newer than it is.