[PATCHv3] gitweb: Git config keys are case insensitive, make config search too
- From
Jakub Narebski <jnareb@gmail.com>
- Date
- Jul 28, 2011, 21:38 UTC
- Message-ID
- <201107282338.04954.jnareb@gmail.com>
- In-Reply-To
- <7vtya6kvrz.fsf@alter.siamese.dyndns.org>
"git config -z -l" that gitweb uses in git_parse_project_config() to populate %config hash returns section and key names of config variables in lowercase (they are case insensitive). When checking %config in git_get_project_config() we have to take it into account.
Helped-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Jakub Narebski <jnareb@gmail.com> --- On Thu, 28 Jul 2011, Junio C Hamano napisał:
Show 19 quoted lines
> Jakub Narebski <jnareb@gmail.com> writes:
>
> > "git config -z -l" that gitweb uses in git_parse_project_config() to
> > populate %config hash returns section and key names of config
> > variables in lowercase (they are case insensitive). When checking
> > %config in git_get_project_config() we have to take it into account.
> >
> > Gitweb does not (yet?) use git config variables with subsection, so we
> > can simply lowercase $key in git_get_project_config (only subsection
> > names are case sensitive).
>
> Why stop there, I have to wonder, instead of futureproofing with minimum
> cost, even with something naïve like:
>
> if (my ($hi, $mi, $lo) = ($key =~ /^([^.]*)\.(.*)\.(.*)$)) {
> $key = join(".", lc($hi), $mi, lc($lo);
> } else {
> $key = lc($key);
> }Well, I thought it would be more involved than this.
Anyway, here it is:
gitweb/gitweb.perl | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 1070805..f858d1b 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -2526,6 +2526,13 @@ sub git_get_project_config { # key sanity check return unless ($key); + # only subsection, if exists, is case sensitive, + # and not lowercased by 'git config -z -l' + 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/);
-- 1.7.5