Hello,
I contact you because I spent quite some time to make something pretty basic with gitweb. I made gitweb behave a bit like UserDir module will in apache. In fact it's only configuration but I think it could be useful to others.
Basicly it allows users of your server who use git to be able to use gitweb to browse their own root project. E.G. :
Alice's private repos :
/home/alice/git/product_a.git (cloned from /var/git/product_a.git) /home/alice/git/product_b.git (cloned from /var/git/product_b.git) /home/alice/git/product_c.git (cloned from /var/git/product_c.git)
Alice's links to her repos which she wants to be able to browse with gitweb :
/home/alice/gitweb/product_a -> /home/alice/git/product_a.git/.git /home/alice/gitweb/product_c -> /home/alice/git/product_c.git/.git
Bare repos :
/var/git/product_a.git /var/git/product_b.git /var/git/product_c.git /var/git/product_d.git
/etc/gitweb.conf :
$projectroot = $ENV{'GITWEB_PROJECTROOT'} || "/var/git/";Apache configuration :
RewriteRule ^/~([^\/]+)/?$ /cgi-bin/gitweb.cgi [QSA,E=GITWEB_PROJECTROOT:/home/$1/gitweb/,L,PT]
So now all users with a gitweb folder in their home will be able to browse all git repos in it through http://<host>/~<user>.
You will find a patch enclosed which try to describe best what I did and why in the gitweb/README.
Regards.
diff --git a/gitweb/README b/gitweb/README index 66c6a93..6f733e6 100644 --- a/gitweb/README +++ b/gitweb/README @@ -306,8 +306,10 @@ repositories, you can configure apache like this: DocumentRoot /pub/git SetEnv GITWEB_CONFIG /etc/gitweb.conf RewriteEngine on + # make the front page an internal rewrite to the gitweb script RewriteRule ^/$ /cgi-bin/gitweb.cgi + # make access for "dumb clients" work RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /cgi-bin/gitweb.cgi%{REQUEST_URI} [L,PT] </VirtualHost> @@ -332,6 +334,20 @@ something like the following in your gitweb.conf (or gitweb_config.perl) file: $my_uri = "/"; $home_link = "/"; +If you want gitweb to act a bit like UserDir mod in apache, knowing, http://<host>/~<user> +will list all git repos of <user> located in a special directory in his home (/home/<user>/gitweb/), +do the following steps : + +Add this to the VirtualHost section of your apache configuration file : + + RewriteRule ^/~([^\/]+)/?$ /cgi-bin/gitweb.cgi [QSA,E=GITWEB_PROJECTROOT:/home/$1/gitweb/,L,PT] + +Modify your gitweb.conf file, located at /etc/gitweb.conf in this example, with : + + $projectroot = $ENV{'GITWEB_PROJECTROOT'} || "/path/to/the/defaul/project/root"; + +Thus, each user with a gitweb folder in his home will be able to browse it with gitweb. +/!\ The gitweb folder and user's home folder must be readable by the webserver user. PATH_INFO usage -----------------------