Ryuichi Kokubo <ryu1kkb@xxxxxxxxx> 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@xxxxxxxxx> 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html