Git v2.9.2 was released in a hurry to accomodate for platforms like Windows, where the `unsigned long` data type is 32-bit even for 64-bit setups. The quick fix was to simply disable all the testing with "absurd" future dates. However, we can do much better than that, as `time_t` exists, and at least on 64-bit Windows it is 64-bit. Meaning: we *can* support these absurd future dates on those platforms. So let's do this. One notable fallout of this patch series is that on 64-bit Linux (and other platforms where `unsigned long` is 64-bit), we now limit the range of dates to LONG_MAX (i.e. the *signed* maximum value). This needs to be done as `time_t` can be signed (and indeed is at least on my Ubuntu setup). Obviously, I think that we can live with that, and I hope that all interested parties agree. Johannes Schindelin (6): t0006 & t5000: prepare for 64-bit time_t Specify explicitly where we parse timestamps Introduce a new "printf format" for timestamps Prepare for timestamps to use 64-bit signed types ref-filter: avoid using `unsigned long` for catch-all data type Use time_t where appropriate Documentation/technical/api-parse-options.txt | 8 +-- Makefile | 4 ++ archive-tar.c | 5 +- builtin/am.c | 4 +- builtin/blame.c | 14 ++--- builtin/fsck.c | 6 +- builtin/gc.c | 2 +- builtin/log.c | 4 +- builtin/merge-base.c | 2 +- builtin/name-rev.c | 6 +- builtin/pack-objects.c | 4 +- builtin/prune.c | 4 +- builtin/receive-pack.c | 10 +-- builtin/reflog.c | 24 +++---- builtin/show-branch.c | 4 +- builtin/worktree.c | 4 +- bundle.c | 4 +- cache.h | 14 ++--- commit.c | 16 ++--- commit.h | 2 +- config.mak.uname | 2 + credential-cache--daemon.c | 12 ++-- date.c | 90 +++++++++++++-------------- fetch-pack.c | 8 +-- fsck.c | 2 +- git-compat-util.h | 10 +++ http-backend.c | 4 +- parse-options-cb.c | 4 +- pretty.c | 4 +- reachable.c | 10 ++- reachable.h | 4 +- ref-filter.c | 22 +++---- reflog-walk.c | 8 +-- refs.c | 14 ++--- refs.h | 8 +-- refs/files-backend.c | 4 +- revision.c | 6 +- revision.h | 4 +- sha1_name.c | 6 +- t/helper/test-date.c | 11 ++-- t/helper/test-parse-options.c | 4 +- t/t0006-date.sh | 4 +- t/t5000-tar-tree.sh | 6 +- t/test-lib.sh | 2 + tag.c | 4 +- tag.h | 2 +- upload-pack.c | 8 +-- vcs-svn/fast_export.c | 8 +-- vcs-svn/fast_export.h | 4 +- vcs-svn/svndump.c | 2 +- wt-status.c | 2 +- 51 files changed, 221 insertions(+), 199 deletions(-) base-commit: e7e07d5a4fcc2a203d9873968ad3e6bd4d7419d7 Published-As: https://github.com/dscho/git/releases/tag/time_t-may-be-int64-v1 Fetch-It-Via: git fetch https://github.com/dscho/git time_t-may-be-int64-v1 -- 2.11.1.windows.1.379.g44ae0bc