@matheusbsbs / matheus-bagliano / commits / 964ad928d6
Fork 0

gitweb multiple project roots documentation

This commit adds in the gitweb/README file a description of how to use gitweb with several project roots using apache virtualhost rewrite rules. Signed-off-by: Sylvain Rabot <sylvain@abstraction.fr> Acked-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sylvain Rabot committed Mar 2, 2010 at 01:04 UTC 964ad928d65b8bdf15bee4a662629824a0b3a0e7
1 file changed +64 -3
gitweb/README
+64 -3
@@ -312,12 +312,16 @@ If you want to have one URL for both gitweb and your http://
312 repositories, you can configure apache like this:
313
314 <VirtualHost *:80>
315 - ServerName git.example.org
316 - DocumentRoot /pub/git
317 - SetEnv GITWEB_CONFIG /etc/gitweb.conf
315 + ServerName git.example.org
316 + DocumentRoot /pub/git
317 + SetEnv GITWEB_CONFIG /etc/gitweb.conf
318 +
319 + # turning on mod rewrite
320 RewriteEngine on
321 +
322 # make the front page an internal rewrite to the gitweb script
323 RewriteRule ^/$ /cgi-bin/gitweb.cgi
324 +
325 # make access for "dumb clients" work
326 RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /cgi-bin/gitweb.cgi%{REQUEST_URI} [L,PT]
327 </VirtualHost>
@@ -343,6 +347,63 @@ something like the following in your gitweb.conf (or gitweb_config.perl) file:
347 $home_link = "/";
348
349
350 +Webserver configuration with multiple projects' root
351 +----------------------------------------------------
352 +
353 +If you want to use gitweb with several project roots you can edit your apache
354 +virtual host and gitweb.conf configuration files like this :
355 +
356 +virtual host configuration :
357 +
358 +<VirtualHost *:80>
359 + ServerName git.example.org
360 + DocumentRoot /pub/git
361 + SetEnv GITWEB_CONFIG /etc/gitweb.conf
362 +
363 + # turning on mod rewrite
364 + RewriteEngine on
365 +
366 + # make the front page an internal rewrite to the gitweb script
367 + RewriteRule ^/$ /cgi-bin/gitweb.cgi [QSA,L,PT]
368 +
369 + # look for a public_git folder in unix users' home
370 + # http://git.example.org/~<user>/
371 + RewriteRule ^/\~([^\/]+)(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi [QSA,E=GITWEB_PROJECTROOT:/home/$1/public_git/,L,PT]
372 +
373 + # http://git.example.org/+<user>/
374 + #RewriteRule ^/\+([^\/]+)(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi [QSA,E=GITWEB_PROJECTROOT:/home/$1/public_git/,L,PT]
375 +
376 + # http://git.example.org/user/<user>/
377 + #RewriteRule ^/user/([^\/]+)/(gitweb.cgi)?$ /cgi-bin/gitweb.cgi [QSA,E=GITWEB_PROJECTROOT:/home/$1/public_git/,L,PT]
378 +
379 + # defined list of project roots
380 + RewriteRule ^/scm(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi [QSA,E=GITWEB_PROJECTROOT:/pub/scm/,L,PT]
381 + RewriteRule ^/var(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi [QSA,E=GITWEB_PROJECTROOT:/var/git/,L,PT]
382 +
383 + # make access for "dumb clients" work
384 + RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /cgi-bin/gitweb.cgi%{REQUEST_URI} [L,PT]
385 +</VirtualHost>
386 +
387 +gitweb.conf configuration :
388 +
389 +$projectroot = $ENV{'GITWEB_PROJECTROOT'} || "/pub/git";
390 +
391 +These configurations enable two things. First, each unix user (<user>) of the
392 +server will be able to browse through gitweb git repositories found in
393 +~/public_git/ with the following url : http://git.example.org/~<user>/
394 +
395 +If you do not want this feature on your server just remove the second rewrite rule.
396 +
397 +If you already use mod_userdir in your virtual host or you don't want to use
398 +the '~' as first character just comment or remove the second rewrite rule and
399 +uncomment one of the following according to what you want.
400 +
401 +Second, repositories found in /pub/scm/ and /var/git/ will be accesible
402 +through http://git.example.org/scm/ and http://git.example.org/var/.
403 +You can add as many project roots as you want by adding rewrite rules like the
404 +third and the fourth.
405 +
406 +
407 PATH_INFO usage
408 -----------------------
409 If you enable PATH_INFO usage in gitweb by putting