From: Jeff King <peff@peff.net>
To: Norbert Kiesel <nkiesel@gmail.com>
Cc: Stefan Beller <sbeller@google.com>,
"git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: unable to pull from remote if commit date is in the future
Date: Mon, 20 Jun 2016 16:00:12 -0400 [thread overview]
Message-ID: <20160620200011.GC3631@sigill.intra.peff.net> (raw)
In-Reply-To: <20160620194648.GB3631@sigill.intra.peff.net>
On Mon, Jun 20, 2016 at 03:46:49PM -0400, Jeff King wrote:
> So to answer my own questions:
>
> $ git cat-file commit 23c07cc | egrep '^author|committer'
> author Sean D'Epagnier <seandepagnier@gmail.com> 5758122296 -40643156
> committer Sean D'Epagnier <seandepagnier@gmail.com> 5758122296 -40643156
>
> Yes, the timezone really is that ridiculous value. No, the author and
> committer aren't different. According to GNU date, the correct timestamp
> is actually in 2152. Offhand, I'd guess that the timestamp exceeding
> 2^32 is getting converted somewhere inside git to a bogus value, and
> that's how we end up with 2106.
Ah, nope. Everything is working as designed.
5758122296 _is_ in 2152, but that's before we apply the author's
timezone offset. :)
Timezones are supposed to be [+-]HHMM. So the -40643156 timezone is
parsed as -406431 hours, 56 minutes. Which is about 46 years. Hence git
printing 2106.
You _should_ be able to get the right answer by asking git for
--date=local, but it doesn't seem to work. Looks like it is because our
tm_to_time_t hits this code:
if (year < 0 || year > 129) /* algo only works for 1970-2099 */
return -1;
and the caller does not actually check the error. The resulting timezone
is the screwed-up -40643156, which is perhaps how it got into the commit
in the first place.
-Peff
next prev parent reply other threads:[~2016-06-20 20:01 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-20 18:41 unable to pull from remote if commit date is in the future Norbert Kiesel
2016-06-20 18:46 ` Stefan Beller
2016-06-20 19:05 ` Norbert Kiesel
2016-06-20 19:39 ` Jeff King
2016-06-20 19:45 ` Norbert Kiesel
2016-06-20 19:46 ` Jeff King
2016-06-20 20:00 ` Jeff King [this message]
2016-06-20 21:09 ` [PATCH 0/3] fix local_tzoffset with far-in-future dates Jeff King
2016-06-20 21:10 ` [PATCH 1/3] t0006: rename test-date's "show" to "relative" Jeff King
2016-06-20 21:11 ` [PATCH 2/3] t0006: test various date formats Jeff King
2016-06-20 21:14 ` [PATCH 3/3] local_tzoffset: detect errors from tm_to_time_t Jeff King
2016-06-20 22:11 ` [PATCH 0/3] fix local_tzoffset with far-in-future dates Junio C Hamano
2016-06-20 22:21 ` Jeff King
2016-06-21 6:37 ` Norbert Kiesel
2016-06-21 12:18 ` Jeff King
2016-06-20 19:49 ` unable to pull from remote if commit date is in the future Eric Deplagne
2016-06-20 20:02 ` Jeff King
2016-06-20 20:27 ` Andreas Schwab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160620200011.GC3631@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=nkiesel@gmail.com \
--cc=sbeller@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).