git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Accept dates before 2000/01/01 when specified as seconds since the epoch
@ 2007-06-06  8:11 Johannes Sixt
  2007-06-06  8:29 ` Junio C Hamano
  0 siblings, 1 reply; 6+ messages in thread
From: Johannes Sixt @ 2007-06-06  8:11 UTC (permalink / raw)
  To: git, junkio; +Cc: Johannes Sixt

Tests with git-filter-branch on a repository that was converted from
CVS and that has commits reaching back to 1999 revealed that it is
necessary to parse dates before 2000/01/01 when they are specified
as seconds since 1970/01/01. There is now still a limit, 100000000,
which is 1973/03/03 09:46:40 UTC, in order to allow that dates are
represented as 8 digits.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
---
 date.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/date.c b/date.c
index a9b59a2..4690371 100644
--- a/date.c
+++ b/date.c
@@ -414,9 +414,11 @@ static int match_digit(const char *date, struct tm *tm, int *offset, int *tm_gmt
 	num = strtoul(date, &end, 10);
 
 	/*
-	 * Seconds since 1970? We trigger on that for anything after Jan 1, 2000
+	 * Seconds since 1970? We trigger on that for any numbers with
+	 * more than 8 digits. This is because we don't want to rule out
+	 * numbers like 20070606 as a YYYYMMDD date.
 	 */
-	if (num > 946684800) {
+	if (num >= 100000000) {
 		time_t time = num;
 		if (gmtime_r(&time, tm)) {
 			*tm_gmt = 1;
-- 
1.5.2.1.120.gd732

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] Accept dates before 2000/01/01 when specified as seconds since the epoch
  2007-06-06  8:11 [PATCH] Accept dates before 2000/01/01 when specified as seconds since the epoch Johannes Sixt
@ 2007-06-06  8:29 ` Junio C Hamano
  2007-06-06 10:42   ` Johannes Sixt
  2007-06-07  5:09   ` Sam Vilain
  0 siblings, 2 replies; 6+ messages in thread
From: Junio C Hamano @ 2007-06-06  8:29 UTC (permalink / raw)
  To: Johannes Sixt; +Cc: git

I vaguely recall hitting the same issue soon after date.c was
done, and sending in a patch in the same spirit but with
different implementation (I essentially duplicated that "seconds
since epoch" without any cutoff as the last ditch fallback) long
time ago (this was before I took git over; the patch was rejected).

It almost makes me wonder if it is better to introduce a special
syntax to denote "seconds since epoch plus timezone offset" for
our Porcelain use, instead of keeping this arbitrary cut-off
date which nobody can agree on and which forces us to roll back
from time to time.  For one thing, such a syntax would allow us
to talk about a timestamp before the epoch.

Perhaps

	"epoch" [-+] [0-9]+ " " [-+][0-9][0-9][0-9][0-9]

?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Accept dates before 2000/01/01 when specified as seconds  since the epoch
  2007-06-06  8:29 ` Junio C Hamano
@ 2007-06-06 10:42   ` Johannes Sixt
  2007-06-07  5:09   ` Sam Vilain
  1 sibling, 0 replies; 6+ messages in thread
From: Johannes Sixt @ 2007-06-06 10:42 UTC (permalink / raw)
  To: git

Junio C Hamano wrote:
> 
> I vaguely recall hitting the same issue soon after date.c was
> done, and sending in a patch in the same spirit but with
> different implementation (I essentially duplicated that "seconds
> since epoch" without any cutoff as the last ditch fallback) long
> time ago (this was before I took git over; the patch was rejected).
> 
> It almost makes me wonder if it is better to introduce a special
> syntax to denote "seconds since epoch plus timezone offset" for
> our Porcelain use, instead of keeping this arbitrary cut-off
> date which nobody can agree on and which forces us to roll back
> from time to time.  For one thing, such a syntax would allow us
> to talk about a timestamp before the epoch.
> 
> Perhaps
> 
>         "epoch" [-+] [0-9]+ " " [-+][0-9][0-9][0-9][0-9]
> 
> ?

OTOH, the previous limit 2000/01/01 was completely arbitrary, while the
new limit 100000000secs has some justification: Numbers with fewer
digits could be mistaken as dates.

-- Hannes

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Accept dates before 2000/01/01 when specified as seconds since the epoch
  2007-06-06  8:29 ` Junio C Hamano
  2007-06-06 10:42   ` Johannes Sixt
@ 2007-06-07  5:09   ` Sam Vilain
  2007-06-07  5:29     ` Junio C Hamano
  2007-06-07  5:30     ` Johannes Schindelin
  1 sibling, 2 replies; 6+ messages in thread
From: Sam Vilain @ 2007-06-07  5:09 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Johannes Sixt, git

Junio C Hamano wrote:
> I vaguely recall hitting the same issue soon after date.c was
> done, and sending in a patch in the same spirit but with
> different implementation (I essentially duplicated that "seconds
> since epoch" without any cutoff as the last ditch fallback) long
> time ago (this was before I took git over; the patch was rejected).
> 
> It almost makes me wonder if it is better to introduce a special
> syntax to denote "seconds since epoch plus timezone offset" for
> our Porcelain use, instead of keeping this arbitrary cut-off
> date which nobody can agree on and which forces us to roll back
> from time to time.  For one thing, such a syntax would allow us
> to talk about a timestamp before the epoch.
> 
> Perhaps
> 
> 	"epoch" [-+] [0-9]+ " " [-+][0-9][0-9][0-9][0-9]

Probably a good idea, though it would break cg-admin-rewritehist.  I had
to make a similar change when working with the Perl history.  Perhaps
allow both?

There is a 10 digit ISO forms (YYYYMMDDHH) and a 9 digit form
(YYYYDDDHH), but these are very rare :)

Sam.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Accept dates before 2000/01/01 when specified as seconds since the epoch
  2007-06-07  5:09   ` Sam Vilain
@ 2007-06-07  5:29     ` Junio C Hamano
  2007-06-07  5:30     ` Johannes Schindelin
  1 sibling, 0 replies; 6+ messages in thread
From: Junio C Hamano @ 2007-06-07  5:29 UTC (permalink / raw)
  To: Sam Vilain; +Cc: Johannes Sixt, git

Sam Vilain <sam@vilain.net> writes:

>> Perhaps
>> 
>> 	"epoch" [-+] [0-9]+ " " [-+][0-9][0-9][0-9][0-9]
>
> Probably a good idea, though it would break cg-admin-rewritehist.

I was saying "additionally allow that to express timestamp even
before the epoch", and existing cg-admin-rewritehist does not
feed such a string, so I do not know how the additionally
allowed format could break it.  Maybe I am missing something?

In any case, "timestamps after March 1973" patch from j6t is
a good change independent from the above one.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Accept dates before 2000/01/01 when specified as seconds since the epoch
  2007-06-07  5:09   ` Sam Vilain
  2007-06-07  5:29     ` Junio C Hamano
@ 2007-06-07  5:30     ` Johannes Schindelin
  1 sibling, 0 replies; 6+ messages in thread
From: Johannes Schindelin @ 2007-06-07  5:30 UTC (permalink / raw)
  To: Sam Vilain; +Cc: Junio C Hamano, Johannes Sixt, git

Hi,

On Thu, 7 Jun 2007, Sam Vilain wrote:

> Junio C Hamano wrote:
> > I vaguely recall hitting the same issue soon after date.c was
> > done, and sending in a patch in the same spirit but with
> > different implementation (I essentially duplicated that "seconds
> > since epoch" without any cutoff as the last ditch fallback) long
> > time ago (this was before I took git over; the patch was rejected).
> > 
> > It almost makes me wonder if it is better to introduce a special
> > syntax to denote "seconds since epoch plus timezone offset" for
> > our Porcelain use, instead of keeping this arbitrary cut-off
> > date which nobody can agree on and which forces us to roll back
> > from time to time.  For one thing, such a syntax would allow us
> > to talk about a timestamp before the epoch.
> > 
> > Perhaps
> > 
> > 	"epoch" [-+] [0-9]+ " " [-+][0-9][0-9][0-9][0-9]
> 
> Probably a good idea, though it would break cg-admin-rewritehist.

FWIW I don't think we have to care that much about cg-admin-rewritehist, 
since it lives on as git-filter-branch, and we can adapt it as we go.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-06-07  5:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-06  8:11 [PATCH] Accept dates before 2000/01/01 when specified as seconds since the epoch Johannes Sixt
2007-06-06  8:29 ` Junio C Hamano
2007-06-06 10:42   ` Johannes Sixt
2007-06-07  5:09   ` Sam Vilain
2007-06-07  5:29     ` Junio C Hamano
2007-06-07  5:30     ` Johannes Schindelin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).