Web lists-archives.com

Re: [ANNOUNCE] Git v2.16.0-rc1




Hi Junio,

On Tue, 9 Jan 2018, Junio C Hamano wrote:

> Junio C Hamano <gitster@xxxxxxxxx> writes:
> 
> > Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes:
> >
> >> diff --git a/t/t0021/rot13-filter.pl b/t/t0021/rot13-filter.pl
> >> index f1678851de9..470107248eb 100644
> >> --- a/t/t0021/rot13-filter.pl
> >> +++ b/t/t0021/rot13-filter.pl
> >> @@ -31,7 +31,22 @@
> >>  #
> >>  
> >>  use 5.008;
> >> -use lib (split(/:/, $ENV{GITPERLLIB}));
> >> +sub gitperllib {
> >> +...
> >> +	if ($ENV{GITPERLLIB} =~ /;/) {
> >> +		return split(/;/, $ENV{GITPERLLIB});
> >> +	}
> >> +	return split(/:/, $ENV{GITPERLLIB});
> >> +}
> >
> > This cannot be the whole story for a few reasons.
> >
> >  - In t/test-lib.sh we see this:
> >
> >    GITPERLLIB="$GIT_BUILD_DIR"/perl/blib/lib:"$GIT_BUILD_DIR"/perl/blib/arch/auto/Git
> >    export GITPERLLIB
> >
> >    If this part wants to split with ';', then the joining needs to
> >    be done with ';' to match, no?
> >
> >  - In addition to t0021, there are similar split with colon in 0202,
> >    9000 and 9700, yet I am getting the feeling that you observed the
> >    issue only in0021, to which I do not think of a good explanation
> >    why.
> 
> This somehow vaguely rang a bell, and I dug this thing up from the
> archive, [*1*] which ended like so:
> 
>     >> In our C code, we have "#define PATH_SEP ';'", and encourage
>     >> our code to be careful and use it.  Is there something
>     >> similar for Perl scripts, I wonder.
>     >>
>     > We probably should find a better solution to allow this to
>     > work with windows style paths...? I know that python provides
>     > os.pathsep, but I haven't seen an equivalent for perl yet.
>     >
>     > The Env[1] core modules suggests using
>     > $Config::Config{path_sep}[2]..  maybe we should be using this?
> 
>     I was testing this recently on the Perl included with Git for
>     Windows and it returns : for the path separator even though it's
>     on Windows, so I don't think that would work. The Perl in Git
>     for Windows seems to want UNIX-style inputs (something Dscho
>     seemed to allude to in his response earlier.). I'm not sure why
>     it's that way, but he probably knows.
> 
> Your initial response in this thread made it sound as if -rc1 is the
> only thing that changed, but looking at the differences between -rc0
> and -rc1, which does not touch t0021 or any other instances of
> "split(/:/, $ENV{GITPERLLIB})", I am wondering if it is possible
> that perhaps the way Perl is built for GfW has been changed recently
> and we can safely and sanely use $Config::Config{path_sep} (contrary
> to what was found in late Oct in the message quoted above) now?

No, the only thing that changed was the introduction of Git::Packet (and
t0021/*.perl uses that). And that Perl module is not yet installed.

Granted, we tested incorrect versions of those modules, but this late in
the -rc phase, I would prefer to be cautious. People might be relying on
the current bug.

OTOH I might be way too pessimistic and we should essentially replicate
that `sub gitperllib` trick in *all* of our Perl scripts.

What do you think?

Ciao,
Dscho