am: use gmtime() to parse mercurial patch date
commite9dfe253fd489ea171e0478147aeb6eab91dab75
authorPaul Tan <pyokagan@gmail.com>
Mon, 15 Jun 2015 11:08:12 +0000 (15 19:08 +0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 15 Jun 2015 19:34:11 +0000 (15 12:34 -0700)
tree2cd95b4285c0e1058f1dbe6ed9d8416b0ac41be2
parentfcceef4e06f30ea6dc30bd8fe16142472447cb94
am: use gmtime() to parse mercurial patch date

An example of the line in a mercurial patch that specifies the date of
the commit would be:

# Date 1433753301 25200

where the first number is the number of seconds since the unix epoch (in
UTC), and the second number is the offset of the timezone, in second s
west of UTC (negative if the timezone is east of UTC).

git-am uses localtime() to break down the first number into its
components (year, month, day, hours, minutes, seconds etc.). However,
the returned components are relative to the user's time zone. As a
result, if the user's time zone does not match the time zone specified
in the patch, the resulting commit will have the wrong author date.

Fix this by using gmtime() instead, which uses UTC instead of the user's
time zone.

Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-am.sh
t/t4150-am.sh