git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).