Code

Accept dates before 2000/01/01 when specified as seconds since the epoch
authorJohannes Sixt <johannes.sixt@telecom.at>
Wed, 6 Jun 2007 08:11:55 +0000 (10:11 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 6 Jun 2007 22:20:12 +0000 (15:20 -0700)
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
date.c

diff --git a/date.c b/date.c
index a9b59a289e7b22f34958ccc7b80b02a01cf793c6..4690371e5559f72b7755b3cc92ae85843098d285 100644 (file)
--- 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;