In testing bup, I found that git creates bizarre timezone values near
the transition to DST. The following script creates a git repository
with two commits, and on several NetBSD systems the second commit has a
very strange timezone; git log output is included.
I am curious if this fails anywhere else, and if anyone has any idea
why. I am unclear on if this is a git bug or a NetBSD bug.
I may have sent something like this a year ago, but I don't remember
clearly, and I just ran across this again. Apparently the problem also
does not occur on FreeBSD.
----------------------------------------
commit 16b7bfce9a2adb00dc90c7df5da8d695fe4c025a
Author: Greg Troxel <gdt%lexort.com@localhost>
Date: Sat Apr 8 21:31:44 1922 +38731400
date 1394330400
commit d7bfc2fe7bf0f7c8c39c3ec17335fe57a578e546
Author: Greg Troxel <gdt%lexort.com@localhost>
Date: Sat Mar 8 20:59:59 2014 -0500
date 1394330399
------------------------------------------
#!/bin/sh
# This program tests git's handling of --date with timeval arguments
# near the tranasition to DST in March of 2014, in the EST5EDT timezone.
# Somehow, a timezone offset of 44 years is computed.
# The failure has been observed on netbsd-5, netbsd-7, netbsd-8.
# The failure has been observed not to occur on MacOS 10.12.
set -e
set -x
uname -a
git --version
rm -rf test-repo.git
git init test-repo.git
cd test-repo.git
TZ=EST5EDT
# 1394330399:
# date -r: Sat Mar 8 20:59:59 EST 2014
# UTC: Sun Mar 9 01:59:59 UTC 2014
# git: Sat Mar 8 20:59:59 2014 -0500
# 1394330400:
# date -r: Sat Mar 8 21:00:00 EST 2014
# UTC: Sun Mar 9 02:00:00 UTC 2014
# git: Wed May 15 04:00:00 2058 +38731400
# 1394334000:
# date -r: Sat Mar 8 22:00:00 EST 2014
# UTC: Sun Mar 9 03:00:00 UTC 2014
# git: Sat Mar 8 23:00:00 2014 -0400
#TZ=CST4CDT
# 1394333999:
# date -r: Sat Mar 8 22:59:59 CST 2014
# UTC: Sun Mar 9 02:59:59 UTC 2014
# git: Sat Mar 8 22:59:59 2014 -0400
# 1394334000:
# date -r: Sat Mar 8 23:00:00 CST 2014
# UTC: Sun Mar 9 03:00:00 UTC 2014
# git: Wed May 15 06:00:00 2058 +38731500
# 1394337599:
# git: Wed May 15 07:59:59 2058 +38731600
export TZ
# Create one ok commit, and one bad one.
timeval=1394330399
commit=0
numcommits=2
while [ $commit -lt $numcommits ]; do
echo $timeval > when
git add when
git commit --date $timeval -m "date $timeval"
timeval=`expr $timeval + 1`
commit=`expr $commit + 1`
done
git log
git fsck
Attachment:
signature.asc
Description: PGP signature