[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

MTime resurrected

From: Rick Yorgason <rick_at_longbowgames.com>
Date: Thu, 16 Feb 2012 04:44:03 -0500

So, I've found myself needing the MTime extension that's been under
discussion since 2003 (Issue #1256) and just spent some time reading the
various posts associated with it.

In 2010 Edmund Wong wrote a nearly complete spec for mtime preservation,
after which some discussion narrowed it down, but it seemed to have been
forgotten again. For reference, the thread starts here:

http://svn.haxx.se/dev/archive-2010-02/0127.shtml

While reading through the posts, I wanted to reply to something. I
normally wouldn't have resurrected a two year old post, but given that
we're close to being able to measure this bug on a decade scale, I
figure two years isn't all that long. The message I'm responding to is here:

http://svn.haxx.se/dev/archive-2010-02/0131.shtml

Where Philipp Marek wrote:
>> >> + ... This functional specification takes
>> >> + the tact of setting the 'svn:mtime' property to the current
>> >> + mtime as it will give the user at least a starting point
>> >> + to which to make their statistical/informational mtime references.
>> >
>> > So there's no way to have some part of the WC with mtime-storage, and
>> > another without? I'm thinking about generated binaries that you want to
>> > keep.
>>
>> Pardon me for being a bit dense. Do you mean that generated binaries
>> (or binaries in general?) should not have the 'mtime' stored?
> No ...
> If you've got some source files, you *don't* want mtime stored for them, so
> that "make" knows what to re-compile.
> But if you want to keep the generated binaries (and especially if there's some
> 3rd party dependence, eg. on some DLLs), you *want* the mtime - because that's
> the easiest thing to compare over a phone line.
>
> So it's entirely possible that some files shall have the mtime stored, while
> others shouldn't.

(Reminder: Philipp used the term 'text-time' to refer to the mtime as
recorded by svn.)

Wouldn't an acceptable default be to always update the local file time
to the text-time, except when the local file time is newer? (i.e.
Ensuring that the time never goes backward, even on a switch or revert.)

That would never screw up a build system, and would usually give the
text-time to people wanting it. For people who absolutely need one
behavior or the other in every edge case, there's always configuration
options.

I think the only options you would need are use-commit-time (which you
already have) and use-text-time. I don't think you would need an option
to use the current behaviour; the only use case anybody has brought up
for the current behaviour is build systems, but in that case you don't
care how fragile the file time is, as long as it always goes forward,
and the solution I'm proposing is already less fragile than what we
currently have.

(Actually, it's not easy to think of a good use case for use-commit-time
either, but I suspect this proposal is going to be controversial enough
as it is without suggesting that use-commit-time meet the chopping block
too.)

-Rick-
Received on 2012-02-16 10:51:50 CET

This is an archived mail posted to the Subversion Dev mailing list.