Re* [PATCH] gitweb: make remote_heads config setting work.
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 20, 2012, 22:21 UTC
- Message-ID
- <7vpq37rk3v.fsf_-_@alter.siamese.dyndns.org>
- In-Reply-To
- <20121109163710.GD19725@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 19 quoted lines
> On Thu, Nov 08, 2012 at 08:40:11PM -0800, Junio C Hamano wrote:
>
>> Looking at the code before this part:
>>
>> if (my ($hi, $mi, $lo) = ($key =~ /^([^.]*)\.(.*)\.([^.]*)$/)) {
>> $key = join(".", lc($hi), $mi, lc($lo));
>> } else {
>> $key = lc($key);
>> }
>> $key =~ s/^gitweb\.//;
>> return if ($key =~ m/\W/);
>>
>> the new code is munding the $hi and $mi parts, while the mistaken
>> configuration this patch is trying to correct is about the $lo part,
>> and possibly the $hi part, but never the $mi part.
>
> Good catch. I think the "return" in the existing code suffers from the
> same problem: it will bail on non-word characters in the $mi part, but
> that part should allow arbitrary characters.I am tired of keeping the "expecting reroll" entries and having to worry about them, so let's do this
-- >8 -- Subject: [squash] gitweb: make remote_heads config setting work
Only the top-level and bottom-level names are case insensitive and spelled without "_". Protect future support of subsection names from name mangling.
Signed-off-by: Junio C Hamano <gitster@pobox.com> --- gitweb/gitweb.perl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git c/gitweb/gitweb.perl w/gitweb/gitweb.perl index f2144c8..c421fa4 100755 --- c/gitweb/gitweb.perl +++ w/gitweb/gitweb.perl @@ -2697,13 +2697,15 @@ sub git_get_project_config { # only subsection, if exists, is case sensitive, # and not lowercased by 'git config -z -l' if (my ($hi, $mi, $lo) = ($key =~ /^([^.]*)\.(.*)\.([^.]*)$/)) { + $lo =~ s/_//g; $key = join(".", lc($hi), $mi, lc($lo)); + return if ($lo =~ /\W/ || $hi =~ /\W/); } else { $key = lc($key); + $key =~ s/_//g; + return if ($key =~ /\W/); } $key =~ s/^gitweb\.//; - $key =~ s/_//g; - return if ($key =~ m/\W/); # type sanity check if (defined $type) {