On 10/12/26 4:08 AM, Junio C Hamano wrote:
René Scharfe [off-list ref] writes:
quoted
diff --git a/t/t5004-archive-corner-cases.sh b/t/t5004-archive-corner-cases.sh
index 768b0ff85d..20bab21048 100755
--- a/t/t5004-archive-corner-cases.sh
+++ b/t/t5004-archive-corner-cases.sh
@@ -227,4 +227,32 @@ test_expect_success 'tar archive with long paths' '
git archive -o long_paths.tar $tree
'
+test_lazy_prereq ZIPINFO_UT_EXTRA '
+ "$ZIPINFO" -v "$TEST_DIRECTORY"/t5004/big-pack.zip |
+ grep "UT extra field modtime"
+'
+
+test_expect_success TIME_IS_64BIT 'zip archive with 32-bit mtime' '
+ blob=$(echo foo | git hash-object -w --stdin) &&
+ tree=$(printf "100644 blob $blob\tfile" | git mktree) &&
+ git archive --mtime="@2147483647 +0000" -o with_ut_extra.zip $tree
+'
+
+test_expect_success TIME_IS_64BIT 'zip archive with mtime exceeding 32-bit' '
+ blob=$(echo foo | git hash-object -w --stdin) &&
+ tree=$(printf "100644 blob $blob\tfile" | git mktree) &&
+ git archive --mtime="@2147483648 +0000" -o without_ut_extra.zip $tree
+'
Both Ubuntu/20.02 i386 (which is going away so you do not have to
deeply care) and Debian/latest i386 (which we plan to use to replace
the Ubuntu/20.02 i386, so it would be superb to get it work) jobs
seem to fail this one.
https://github.com/git/git/actions/runs/38189684665/job/114619579067#step:10:321
https://github.com/git/git/actions/runs/38189685137/job/114619583658#step:10:337
git archive --mtime="@2147483648 +0000" fails in these runs with "fatal:
timestamp too large for this system: 18446744071562067968, which looks
like a preexisting bug. I suspect the time_t conversion in dos_time().
Will take a deeper look later this week.
René