[cvsnt] CVSNT 2.5.01 B1927 updates timestamps

Bo Berglund Bo.Berglund at system3r.se
Tue Apr 26 09:00:34 BST 2005


The following cases for timestamp modification is what I have observed:

1. Local file is unmodified, but a new revision exists in the repository
When you do a cvs update to retrieve the changes in this file then the
local file will be automatically modified because of the merging and the
timestamp changes just like it would if the normal editor is used.
The CVS metadata is changed to reflect this timestamp change too so
the file remains in its unmodified state.

2. Local file is modified and there is also a repository modification
This is pretty much the same as above, the merge takes place and the file
is now saved with a new contenst and timestamped as "now".
In this case the CVS metadata keeps track of the fact that the file is
changed locally too.

So in both cases the file timestamp changes to "now" and this is very
important because otherwise any normal make tool would not understand
that it needs to recompile the files the next time.

Consider case #1 above.
If your nonmodified file would be updated and the timestamp set to the
repository commit time, then this could well be several days or even
weeks back in time. If you had built your project say two hours before
the cvs update then the object files would be more recent than the source
file and the next make would not compile in the changes you updated from
CVS. Not good....

Same is true for case #2 also, you could for example have edited your file
yesterday and built your project two hours ago. If the timestamp remained
as the latest of your edit time or the CVS commit time it would still be
earlier than your last build and the new contenst would not be included
into your next build. Not good too...

So I think that the way CVS operates is the best way:

- New checkouts get timestamps equal to the repository commit time.
- Updates in the current sandbox set the timestamps to "now" thus
  forcing a compileation on the next build. Note that this happens
  only if your unchanged local file receives new data on update.
  Files that have not cahned anyware retain their timestamps.

I think that you should not worry about timestamps, let make figure
it out instead.

My $0.02

/Bo


-----Original Message-----
From: cvsnt-bounces at cvsnt.org [mailto:cvsnt-bounces at cvsnt.org]On Behalf
Of Thomas Brackel
Sent: den 26 april 2005 05:54
To: cvsnt at cvsnt.org
Subject: [cvsnt] CVSNT 2.5.01 B1927 updates timestamps


CVSNT 2.5.01 B1927 w/TortoiseCVS 1.8.13 updates timestamps of the files 
committed so they loose their original timestamps.

I found something obout this problem in 
http://sourceforge.net/tracker/?group_id=48103&atid=451972&func=detail&aid=1069471,
and the answer was: " This is a standard feature of CVS, and TortoiseCVS 
cannot change this behaviour."

Maybe. But the CVSNT Manual ('cvsnt–Concurrent Versions System 
2.5.01.1921' of March 29, 2005) does not explicitly mention that 
timestamps of the original (updated or new) files committed to the 
repository are updated to the time when the files are commited.

Instead, in 'A sample session', comments to $CVSEDITOR environment 
variable I found:

"The next update will clue cvsnt in to the fact that the file is
unmodified, and it will reset its stored timestamp so that the file will
not show up in future editor sessions."

Later:

"... if the timestamp differs with the actual modification time of the
file ..." and so on, What's important is: there's an "actual modification
time of the file" and: "The timezone on the timestamp in CVS/Entries
(local or universal) should be the same as the operating system stores for
the timestamp of the file itself."

Later, the document says:

"For your protection, cvsnt will refuse to check in a file if a conflict
occurred and you have not resolved the conflict. Currently to resolve a
conflict, you must change the timestamp on the file."

I agree, of course. And I remember: I did not have this problem when I 
used CVSNT 2.0.58d w/TortoiseCVS 1.4.5 - the timestamps remained the 
same as they were when I finished work on them. Because I'm using a Make 
utility and a mirror drive that is served using timestamps too, so it's 
kind of important that the timestamps remain unchanged when having 
committing to the CVSNT repository. With the new version, at least, 
after having committed, I will 'Make' the whole thing again because the 
Make utility detects the source code's changed timestamps comparing them 
to the corresponding object code's timestamps, and it has has no clue of 
an unchanged file contents. So it wants to do it again.

I'm not shure this is the duty of Concurrent Versions System or any 
version control system.

Kind regards

Thomas
_______________________________________________
cvsnt mailing list
cvsnt at cvsnt.org
http://www.cvsnt.org/cgi-bin/mailman/listinfo/cvsnt



More information about the cvsnt mailing list