HomePhabricator

Survive hand-crafted Git commits which are missing timestamp information

Description

Survive hand-crafted Git commits which are missing timestamp information

Summary:
Fixes T12062. Like the commits from the year 3500, you can artificially build commits with no date information.

We could explicitly store these as null to fully respect the underlying datastore. However, I think it's very unlikely that these commits are intentional/meaningful or that this is valuable.

Additionally, "git show" interprets these commits as "Jan 1, 1970". Just store a 0 to mimic its behavior.

Test Plan:

  • Following the process in T11537#192019, artificially created a commit with no date information (I deleted all date information from the message).
  • Used git show / git log --format ... to inspect it: "Jan 1, 1970" on git show, no information at all on %aD, %aT, etc.
  • Pushed it.
  • Saw exception for trying to insert empty string into epoch colum from bin/repository update.
  • Applied patch.
  • Got a clean import.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T12062

Differential Revision: https://secure.phabricator.com/D17136