git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: Eli BarzilayNext: Eli Barzilay
Message 2 of 6 in “gitweb problem?”
  1. Eli BarzilayMar 1, 2010
  2. Jakub NarebskiMar 1, 2010
  3. Eli BarzilayMar 1, 2010
  4. Jakub NarebskiMar 1, 2010
  5. gitweb: Fix project-specific feature override behaviorJakub Narebski, Mar 1, 2010
  6. Eli BarzilayMar 2, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.