Re: gitweb problem?
- From
Jakub Narebski <jnareb@gmail.com>
- Date
- Mar 1, 2010, 10:24 UTC
- Message-ID
- <m3bpf8mj5k.fsf@localhost.localdomain>
- In-Reply-To
- <m34ol0wmze.fsf@winooski.ccs.neu.edu>
Eli Barzilay <eli@barzilay.org> writes:
Show 11 quoted lines
> Whenever I view the toplevel gitweb page (running as a cgi script > under apache), but not when in a specific repo, I get this in my error > log: > > gitweb.cgi: Use of uninitialized value $git_dir in concatenation (.) or string at /home/git/gitweb/gitweb.cgi line 2065. > fatal: error processing config file(s) > gitweb.cgi: Use of uninitialized value $git_dir in concatenation (.) or string at /home/git/gitweb/gitweb.cgi line 2221. > gitweb.cgi: Use of uninitialized value $git_dir in concatenation (.) or string at /home/git/gitweb/gitweb.cgi line 2218. > > (taken verbatim from the apache error log, removed uninteresting line > prefixes.)
In the future (or if my diagnosis would turn out to be incorrect) could you please show which lines are those (in *your* gitweb.cgi), or at least provide gitweb version? Changes to gitweb can render such line numbers invalid.
> I'm using the pathinfo option, so perhaps there is a problem with that > setup?
In the future (or if my diagnosis would turn out to be incorrect) could you please include relevant parts of $GITWEB_CONFIG (by default it is gitweb_config.perl), at least which features you have enabled, and how they are configured?
Show 14 quoted lines
> > Looking at the source, the last two line numbers are in > `git_get_project_config' -- so my guess is that the code is trying to > get the options from the repository config file even when showing the > toplevel page. Based on this, and also guessing that $git_dir is > unset when viewing the toplevel page, I added > > return unless (defined $git_dir); > > to the top (of the `git_get_project_config' function), and I get no > warnings and everything works as it should. > > (Disclaimer: I can barely read perl, and I'm a git newbie, so all of > this can be due to some other stupid mistake.)
That looks like lack of hardening against pilot error. The git_get_project_config should never be run when $git_dir is not set, as it is meant to access *project* config.
But at the top of git_project_list_body subroutine, which is responsible for
generating toplevel page with list of projects, we have:
my $check_forks = gitweb_check_feature('forks');
and a bit later
my $show_ctags = gitweb_check_feature('ctags');Now both of those features are marked as not supporting project specific override. It might be that you by accident set $feature{XXX}{'override'} to true... but I might be mistaken.
It would be strange that this bug was not detected by t9500 test...
-- Jakub Narebski Poland ShadeHawk on #git