Subject: Re: FastCGI support in gitweb

From: Jakub Narebski <[email-masked]>
Date: Tue, 4 Mar 2008 01:19:21 +0100

On Mon, 3 Mar 2008, Sam Vilain wrote:
> Jakub Narebski wrote:
>> First, as far as I understand it, the patch made gitweb had to be used
>> with FastCGI server.  It has no comments in code, and if I remember
>> correctly the commit message was also fairly nonexistent.  It mixes
>> FastCGI changes with site-wide changes.  It wrapped the whole file in
>> "until last request" loop instead of wrapping dispatch only.
>> 
>> Also I am not sure if gitweb doesn't rely on variables being correctly
>> set which they are not in FastCGI mode.
>> 
>> But most important part: it was never resend (IIRC it was send when
>> gitweb development was in separate repository)
>> 
>> 
>> I have attached the FastCGI patch and CC-ed the author.
> 
> Thanks.  I didn't submit this because I couldn't fix the bugs in it.
> Glad you found it.  I had to make many changes in a similar vein with a
> current gitweb version; did it work for you in its current form?

I couldn't test it with FastCGI server, as I use Apache2, and all
FastCGI modules for Apache are third part modules. Besides, it doesn't
make much sense to use generic FastCGI for Perl, when there is mod_perl
module.

For me for the FastCGI change to be made into mainline it would have
to have the following properties:
 * it should be able to run as both CGI module, and under mod_perl
   module (in legacy mode with ModPerl::Registry) without trouble
 * is should be able to run even if CGI::Fast or FCGI Perl modules
   are not installed in the system
 * the loop over requests should try to be minimal, and not encompass
   whole file
The last condition would probably require to separate option parsing
and validation into separate subroutine.

> You can get it to run externally using FCGI_SOCKET=:3000 (eg, to listen
> on FastCGI TCP port 3000)

Could you elaborate on this?

P.S. It would be good to have examples for web servers other than
Apache2 how to configure them to run gitweb: perhaps lighthttpd, Cheetah,
maybe IIS...

-- 
Jakub Narebski
Poland