mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-18 21:02:41 +01:00
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
This commit is contained in:
parent
c07ec8fee6
commit
4516109495
1 changed files with 7 additions and 0 deletions
|
@ -414,6 +414,13 @@ final class PhabricatorRepositoryDiscoveryEngine
|
|||
$epoch = PhabricatorTime::getNow();
|
||||
}
|
||||
|
||||
// If the epoch is not present at all, treat it as though it stores the
|
||||
// value "0". For discussion, see T12062. This behavior is consistent
|
||||
// with the behavior of "git show".
|
||||
if (!strlen($epoch)) {
|
||||
$epoch = 0;
|
||||
}
|
||||
|
||||
$refs[] = id(new PhabricatorRepositoryCommitRef())
|
||||
->setIdentifier($commit)
|
||||
->setEpoch($epoch)
|
||||
|
|
Loading…
Reference in a new issue