Chapters ▾ 2nd Edition

4.7 Git no Servidor - GitWeb

GitWeb

Agora que você tem acesso básico de leitura/gravação e somente leitura ao seu projeto, pode querer configurar um visualizador simples baseado na web. O Git vem com um script CGI chamado GitWeb que às vezes é usado para isso.

A interface de usuário baseada na web GitWeb
Figure 49. A interface de usuário baseada na web GitWeb

Se você quiser conferir como o GitWeb ficaria no seu projeto, o Git vem com um comando para acionar uma instância temporária se você tiver um servidor web leve (lightweight) no seu sistema, como lighttpd ou webrick. Em máquinas Linux, o lighttpd costuma estar instalado, então você pode conseguir executá-lo digitando git instaweb no diretório do seu projeto. Se você estiver executando o macOS, o Leopard vem pré-instalado com Ruby, então o webrick pode ser a sua melhor aposta. Para iniciar o instaweb com um manipulador não-lighttpd, você pode executá-lo com a opção --httpd.

$ git instaweb --httpd=webrick
[2009-02-21 10:02:21] INFO  WEBrick 1.3.1
[2009-02-21 10:02:21] INFO  ruby 1.8.6 (2008-03-03) [universal-darwin9.0]

Isso inicia um servidor HTTPD na porta 1234 e então inicia automaticamente um navegador da web que abre nessa página. É muito fácil da sua parte. Quando terminar e quiser desligar o servidor, você pode executar o mesmo comando com a opção --stop:

$ git instaweb --httpd=webrick --stop

Se você quiser executar a interface da web em um servidor o tempo todo para a sua equipe ou para um projeto de código aberto que você está hospedando, precisará configurar o script CGI para ser servido pelo seu servidor web normal. Algumas distribuições Linux têm um pacote gitweb que você pode conseguir instalar via apt ou dnf, então você pode querer tentar isso primeiro. Veremos como instalar o GitWeb manualmente de forma muito rápida. Primeiro, você precisa obter o código-fonte do Git, que vem com o GitWeb, e gerar o script CGI personalizado:

$ git clone https://git.kernel.org/pub/scm/git/git.git
$ cd git/
$ make GITWEB_PROJECTROOT="/srv/git" prefix=/usr gitweb
    SUBDIR gitweb
    SUBDIR ../
make[2]: `GIT-VERSION-FILE' is up to date.
    GEN gitweb.cgi
    GEN static/gitweb.js
$ sudo cp -Rf gitweb /var/www/

Observe que você deve dizer ao comando onde encontrar os seus repositórios Git com a variável GITWEB_PROJECTROOT. Agora, você precisa fazer com que o Apache use CGI para esse script, para o qual você pode adicionar um VirtualHost:

<VirtualHost *:80>
    ServerName gitserver
    DocumentRoot /var/www/gitweb
    <Directory /var/www/gitweb>
        Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        order allow,deny
        Allow from all
        AddHandler cgi-script cgi
        DirectoryIndex gitweb.cgi
    </Directory>
</VirtualHost>

Novamente, o GitWeb pode ser servido com qualquer servidor web capaz de rodar CGI ou Perl; se você preferir usar outra coisa, não deve ser difícil de configurar. Neste ponto, você deve conseguir visitar http://gitserver/ para visualizar os seus repositórios online.