From: Junio C Hamano <gitster@pobox.com>
To: Ryuichi Kokubo <ryu1kkb@gmail.com>, Eric Wong <normalperson@yhbt.net>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] git-svn: fix localtime=true on non-glibc environments
Date: Wed, 25 Feb 2015 10:38:10 -0800 [thread overview]
Message-ID: <xmqqfv9tomzx.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1424880281-570-1-git-send-email-ryu1kkb@gmail.com> (Ryuichi Kokubo's message of "Thu, 26 Feb 2015 01:04:41 +0900")
Ryuichi Kokubo <ryu1kkb@gmail.com> writes:
> git svn uses POSIX::strftime('%s', $sec, $min, ...) to make unix epoch time.
> But lowercase %s formatting character is a GNU extention. This causes problem
> in git svn fetch --localtime on non-glibc systems, such as msys or cygwin.
> Using Time::Local::timelocal($sec, $min, ...) fixes it.
>
> Signed-off-by: Ryuichi Kokubo <ryu1kkb@gmail.com>
Sounds sensible.
Because we already have "use Time::Local qw(...)" in perl/Git.pm
that is used by git-svn, we know the platforms that are capable
of running the current git-svn do have Time::Local available, so
I do not have worries about new dependency, either.
Eric?
>
> Notes:
> lowercase %s format character in strftime is a GNU extension and not widely supported.
> POSIX::strftime affected by underlying crt's strftime because POSIX::strftime just calls crt's one.
> Time::Local is good function to replace POSIX::strftime because it's a perl core module function.
>
> Document about Time::Local.
> http://perldoc.perl.org/Time/Local.html
>
> These are specifications of strftime.
>
> The GNU C Library Reference Manual.
> http://www.gnu.org/software/libc/manual/html_node/Formatting-Calendar-Time.html
>
> perl POSIX module's strftime document. It does not have '%s'.
> http://perldoc.perl.org/POSIX.html
>
> strftime document of Microsort Windows C Run-Time library.
> https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx
>
> The Open Group's old specification does not have '%s' too.
> http://pubs.opengroup.org/onlinepubs/007908799/xsh/strftime.html
>
> On my environment, following problems happened.
> - msys : git svn fetch does not progress at all with perl.exe consuming CPU.
> - cygwin : git svn fetch progresses but time stamp information is dropped.
> Every commits have unix epoch timestamp.
>
> I would like to thank git developer and contibutors.
> git helps me so much everyday.
> Thank you.
> ---
> perl/Git/SVN.pm | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm
> index 8e4af71..f243726 100644
> --- a/perl/Git/SVN.pm
> +++ b/perl/Git/SVN.pm
> @@ -14,6 +14,7 @@ use IPC::Open3;
> use Memoize; # core since 5.8.0, Jul 2002
> use Memoize::Storable;
> use POSIX qw(:signal_h);
> +use Time::Local;
>
> use Git qw(
> command
> @@ -1332,7 +1333,7 @@ sub parse_svn_date {
> $ENV{TZ} = 'UTC';
>
> my $epoch_in_UTC =
> - POSIX::strftime('%s', $S, $M, $H, $d, $m - 1, $Y - 1900);
> + Time::Local::timelocal($S, $M, $H, $d, $m - 1, $Y - 1900);
>
> # Determine our local timezone (including DST) at the
> # time of $epoch_in_UTC. $Git::SVN::Log::TZ stored the
next prev parent reply other threads:[~2015-02-25 18:38 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-25 16:04 [PATCH] git-svn: fix localtime=true on non-glibc environments Ryuichi Kokubo
2015-02-25 18:38 ` Junio C Hamano [this message]
2015-02-25 19:42 ` Eric Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqfv9tomzx.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=normalperson@yhbt.net \
--cc=ryu1kkb@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.