Subject: Re: [RFC 5/5] Support 'master@2 hours ago' syntax

From: Shawn Pearce <[email-masked]>
Date: Wed, 17 May 2006 18:06:13 -0400

Junio C Hamano <[email-masked]> wrote:
> Shawn Pearce <[email-masked]> writes:
> 
> +	fprintf(stderr, "warning: Log %s only goes back to %s.\n",
> +		logfile, show_rfc2822_date(date, tz));
> +	return 0;
> 
> I am not sure about this part.  If the oldest log entry was 3
> hours ago, the second oldest 2 hours ago, we can tell during
> that one hour period the ref was at that point.  If the user
> asked "ref as of four hours ago", and if the oldest log entry
> had old SHA1 that is not 0{40} (because the log was not enabled
> before that record), it might make more sense to give that back.

If I understand my own code here what I'm doing is walking back
in the log file, realizing I fell off the first line of it, then
loading the old ref from the first line.  This is the oldest ref
I can find so I return it as a valid ref to the caller but I'm
printing out this warning to tell the user that the oldest point
in time I found in the log is effectively the update date as I have
no idea when that old sha1 first became the value of the ref.

So I think I'm doing what you are expecting here.  The log will start
with the value in the ref at the time the log started, not 0{40}
and that value is what gets returned when we have this warning
come out..  That's the best anyone can expect...

> Also I wonder how much complexity would we suffer and how much
> efficiency would we gain if we binary search the logdata (the
> committer info is variable length, so you would need to resync
> in each step).

I thought about doing this but did not think it would be worth the
effort (either developer to code or CPU to execute) at this point
in time.  I don't think users will be pulling refs from the log very
often and if they are they will probably be pulling from recent time,
not very far back.  Thus starting at the end and walking back is
probably "good enough".

But if it proves to be too slow in practice I'm sure I can come up
with a faster way to walk through the log.  :-)

-- 
Shawn.