Como configurar o Gitweb

6

Eu configurei o Git em um servidor, usando a gitosis para controlar o acesso de commit. Eu gostaria de configurar meu sistema Git para que qualquer pessoa dentro do nosso firewall possa ter acesso de leitura ao repositório Git, e eu gostaria de configurar o Gitweb também.

Eu encontrei vários tutoriais de configuração do Gitweb em vários blogs, mas eles diferem em vários detalhes e alguns deles estão desatualizados. Gostaria que esta pergunta tivesse uma resposta atualizada.

Minha configuração específica é o Red Hat Enterprise Linux. Eu instalei com sucesso o Git, a gitosis e os pacotes Gitweb e Apache. No entanto, eu não descobri como configurar o Apache para realmente conceder acesso ao Gitweb.

Como configuro meu servidor para permitir acesso somente leitura ao Git e para permitir que o Gitweb funcione?

    
por steveha 09.10.2009 / 00:12

2 respostas

8

Depois de instalar o gitweb (no RHEL $ yum install gitweb ), ele deve criar um diretório var/www/git e colocar um arquivo em etc/httpd/conf.d/git.conf . Se estes não existirem, crie-os. Coloque todos os seus repositórios git em var/www/git e edite git.conf para permitir que ele execute scripts cgi e reescreva URLs para o gitweb. Aqui está o que eu tenho:

<Directory /var/www/git>
SetEnv  GITWEB_CONFIG  /etc/gitweb.conf
DirectoryIndex gitweb.cgi
Allow from all
AllowOverride all
Order allow,deny
Options +ExecCGI
AddHandler cgi-script .cgi
<Files gitweb.cgi>
  SetHandler cgi-script
</Files>
RewriteEngine on
RewriteRule ^[a-zA-Z0-9_-]+.git/?(\?.)?$ /gitweb.cgi%{REQUESTURI} [L,PT]
</Directory>

Há também um arquivo gitweb.conf em /etc/gitweb.conf , que aponta para itens como css, favicons e logos. Tenho certeza que eles funcionarão se você deixar seus projetos em / var / www / git, mas se você alterar esse diretório, provavelmente precisará colocá-lo em gitweb.conf.

    
por 09.10.2009 / 07:01
6

Testado no Ubuntu 8.04:

sudo apt-get install apache2 git-core gitweb
sudo a2enmod rewrite

Supondo que você git projetos estão em /pub/git , edite o arquivo: /etc/gitweb.conf

$projectroot = "/pub/git";
$git_temp = "/tmp";
#$home_link = $my_uri || "/";
$home_text = "indextext.html";
$projects_list = $projectroot;
$stylesheet = "/gitweb.css";
$logo = "/git-logo.png";
$favicon = "/git-favicon.png";
# enable human readable URLs
$feature{'pathinfo'}{'default'} = [1];

Agora, configure um novo host virtual no diretório de configuração do Apache. Edite um novo arquivo chamado: /etc/apache2/sites-available/gitweb

<VirtualHost *>
   ServerName     git.mydomain.com
   ServerAlias    git

   DocumentRoot /pub/git
   SetEnv GITWEB_CONFIG /etc/gitweb.conf

   RewriteEngine on
   RewriteRule ^/$                                            /gitweb [PT]
   RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /gitweb%{REQUEST_URI}  [L,PT]

   # Aliases
   ScriptAlias /gitweb           /usr/lib/cgi-bin/gitweb.cgi
   Alias       /gitweb.css       /usr/share/gitweb/gitweb.css
   Alias       /git-logo.png     /usr/share/gitweb/git-logo.png
   Alias       /git-favicon.png  /usr/share/gitweb/git-favicon.png

   # Logfiles
   ErrorLog  /var/log/apache2/gitweb.error.log
   CustomLog /var/log/apache2/gitweb.access.log combined
</VirtualHost>

Ativar o novo site:

sudo a2ensite gitweb

Reinicie o Apache:

sudo invoke-rc.d apache2 restart
    
por 06.11.2009 / 04:12