Hello,
the command
git log --pretty=format:%ad --date=format:%s
displays wrong unixtime values; apparently how much the printed value
differs from the expected value depends on the system's time zone and
whether daylight savings time is enabled or not.
Here is a reproducible recipe compiled by Yuri Khan who helped me
localizing the problem and whom I CC'd:
0. Versions
$ git --version
git version 2.8.2
$ dpkg -l tzdata | tail -1
ii tzdata 2016d-0ubuntu0.16.04 all time zone and
daylight-saving time data
1. Initialize an empty Git repository:
$ git init test
$ cd test
2. Make a commit, using the Europe/Berlin time zone:
$ TZ=Europe/Berlin git commit -m 'test' --allow-empty
3. Examine the timestamp recorded in the commit object:
$ git cat-file -p HEAD | grep author
author Yuri Khan <[email protected]> 1463260938 +0200
4. Check that it corresponds to the current time:
$ date +%s
1463260977
5. Try to get the commit date in the unixtime format:
$ TZ=Europe/Berlin git log --pretty=format:%ad --date=format:%s -1
Expected result: 1463260938 (same as recorded in the commit object).
Observed result: 1463264538 (3600s = one hour ahead).
For lulz, use another time zone:
$ TZ=Asia/Novosibirsk git log --pretty=format:%ad --date=format:%s -1
Expected result: 1463260938 (unixtime is always UTC and should not
depend on TZ).
Observed result: 1463246538 (-14400s = 4 hours behind).
Not even specifying the UTC time zone helps:
$ TZ=UTC git log --pretty=format:%ad --date=format:%s -1
Expected result: still 1463260938.
Observed result: 1463268138 (7200s = 2 hours ahead).
FWIW, personally I have not bound the TZ environment variable, my time
zone is constantly that of Berlin, currently CEST.
Many thanks in advance,
Michael.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html