Skip to content

Commit 595929b

Browse files
committed
Temporarily set -x to reveal git tag failure
This temporarily instruments a fixture script to reveal how the `access::generation_numbers_overflow_is_handled_in_chained_graph` test fails when `GIX_TEST_IGNORE_ARCHIVES=1` is set: the fixture script `generation_number_overflow.sh` runs, and it sets the timestamp `@4147483646` on a commit, which `git` permits. But then `git tag` rejects this timestamp as being out of range. On stderr: + commit future-1 '@4147483646 +0000' + local message=future-1 + local 'date=@4147483646 +0000' + local file=future-1.t + echo future-1 + git add -- future-1.t + '[' -n '@4147483646 +0000' ']' + export 'GIT_COMMITTER_DATE=@4147483646 +0000' + GIT_COMMITTER_DATE='@4147483646 +0000' + git commit -m future-1 + git tag future-1 fatal: Timestamp too large for this system: 4147483646 The nature of the problem is *partially* illuminated by the following experiment on a 32-bit Debian 12 system: $ git init repo Initialized empty Git repository in /home/ek/src/repo/.git/ $ cd repo $ touch a $ git add a $ GIT_COMMITTER_DATE='@4147483646 +0000' git commit -m 'Initial commit' [main (root-commit) 99b1de4] Initial commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 a $ git log --pretty=fuller commit 99b1de4e0610ff715e784bd4089dc315e8071332 (HEAD -> main) Author: Eliah Kagan <[email protected]> AuthorDate: Sat Nov 23 01:05:12 2024 -0500 Commit: Eliah Kagan <[email protected]> CommitDate: Thu Jan 1 00:00:00 1970 +0000 Initial commit $ git tag t fatal: Timestamp too large for this system: 4147483646 $ git tag -a t fatal: Timestamp too large for this system: 4147483646 The timestamp is accepted when committing, and written as actor metadata for the committer. But is is not (or at least not always) interpreted as intended: as `git log` shows it, it has wrapped around to 1970. Even though the commit was created successfully, attempting to make a tag that points to it fails. This happens both for a lightweight tag (as in the fixture script) and an annotated tag, so making it a tag object does not seem to be a workaround.
1 parent 27d047f commit 595929b

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

gix-commitgraph/tests/fixtures/generation_number_overflow.sh

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ FUTURE_DATE="@4147483646 +0000"
3636
git init
3737
git config commitGraph.generationVersion 2
3838

39+
set -x
3940
commit future-1 "$FUTURE_DATE"
4041
commit old-1 "$UNIX_EPOCH_ZERO"
4142
git commit-graph write --reachable

0 commit comments

Comments
 (0)