Git --distributed-is-the-new-centralized
Chapters ▾ 1st Edition

4.6 Git no Servidor - GitWeb

GitWeb

Agora que você tem acesso de leitura/escrita e apenas leitura para o seu projeto, você pode querer configurar um visualizador simples baseado em web. Git vem com um script CGI chamado GitWeb que normalmente é usado para isso. Você pode ver o GitWeb em uso em sites como http://git.kernel.org (veja a Figura 4-1).


Figure 4-1. A interface de usuário baseada em web GitWeb.

Se você quiser ver como GitWeb aparecerá para o seu projeto, Git vem com um comando para disparar uma instância temporária se você tem um servidor leve no seu sistema como lighttpd ou webrick. Em máquinas Linux, lighttpd normalmente está instalado, então você deve conseguir fazê-lo funcionar digitando git instaweb no diretório do seu projeto. Se você está usando um Mac, Leopard vem com Ruby pré-instalado, então webrick é sua melhor aposta. Para iniciar instaweb com um manipulador diferente de lighttpd, você pode rodá-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 automaticamente inicia um navegador web que abre naquela página. Quando você tiver terminado e quiser desligar o servidor, você pode rodar o mesmo comando com a opção --stop:

$ git instaweb --httpd=webrick --stop

Se você quer rodar a interface web num servidor o tempo inteiro para a sua equipe ou para um projeto open source que você esteja hospedando, você vai precisar configurar o script CGI para ser servido pelo seu servidor web normal. Algumas distribuições Linux têm um pacote gitweb que você deve ser capaz de instalar via apt ou yum, então você pode tentar isso primeiro. Nós procederemos na instalação do GitWeb manualmente bem rápido. Primeiro, você precisa pegar o código-fonte do Git, o qual o GitWeb acompanha, e gerar o script CGI personalizado:

$ git clone git://git.kernel.org/pub/scm/git/git.git
$ cd git/
$ make GITWEB_PROJECTROOT="/opt/git" \
        prefix=/usr gitweb
$ sudo cp -Rf gitweb /var/www/

Note que você precisa avisar ao comando onde encontrar os seus repositórios Git com a variável GITWEB_PROJECTROOT. Agora, você precisa fazer o Apache usar CGI para aquele 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, GitWeb pode ser servido com qualquer servidor CGI. Agora, você poderá visitar http://gitserver/ para visualizar seus repositórios online, e você pode usar http://git.gitserver para efetuar clone e fetch nos seus repositórios via HTTP.