Uma pincelada no GIT parte II - Configurando HTTP

NÃO LEIA ISSO - ou melhor, pode até ler, mas esse aqui não é o jeito certo de fazer as coisas. :P
Leia esse aqui

Antes de mais nada, a fonte primária de informação é essa aqui.
Isto aqui é a continuação do post anterior sobre o git. Como prometido, hoje vou explicar como configurar o git para usar http ou invés de ssh.



Começando do começo





Bom, começarmos a configurar o servidor você vai precisar de algumas coisas instaladas nele. São elas:
   - Um servidor web apache
   - Git
Você vai precisar também ter acesso como root neste servidor para poder fazer a configuração inicial do repositório.

Antes de prosseguir, vale uma ressalva: O apache é um treco chato... Se você pegar os fontes e compilar, o 'document root' e os arquivos de configuração serão em um lugar. Se você estiver usando um Red Hat serão em outro, em um Debian serão em outro ainda. E no windows então! Nem faço idéia como funciona o apache no windows.

Por isso, primeiro sempre darei uma explicação "genérica" de como a coisa funciona. Nos exemplos que darei, os caminhos de arquivos e tudo mais serão baseados em Debian. Se você uma um sistema operacional diferente, leia o manual do apache e veja onde estão localizados seus arquivos.



Configurando o servidor





A primeira coisa a fazer é certificar-se que o módulo dav_module está sendo carregado pelo apache. Isto pode ser feito adicionando as seguitnes linhas os seu httpd.conf:
LoadModule dav_module libexec/httpd/libdav.so
AddModule mod_dav.c
DAVLockDB "/usr/local/apache2/temp/DAV.lock"

No Debian, isto pode ser feito de uma outra maneira. Deste jeito:
# a2enmod dav_fs
# a2enmod dav



Depois disto, é preciso criar um repositório "pelado" para o git. Para isto, criaremos um diretório dentro do nosso "document root", criaremos o reporitório dentro deste diretório recém criado, e por fim, deixaremos o usuário do apache como dono deste diretório e de todos os seus sub-diretórios. No Debian fica assim:
# mkdir /var/www/novo_projeto.git
# cd /var/www/novo_projeto.git
# git --bare init
# cd ../
# chown -R www-data:www-data novo_projeto.git/

Agora, vamos criar um usuário/senha para acessar o projeto . A sintaxe é assim:
htpasswd -c /caminho/para/o/arquivo/de/senha <usuario>

O diretório onde se encontra o arquivo de senhas tem que ser lido pelo apache e, de preferência, não ser lido pelo resto do mundo. O parâmetro -c passado ao htpasswd significa que criaremos um novo arquivo. Se o arquivo já exitir e você quiser apenas acrescentar mais um usuário, htpasswd deve ser chamado sem o parâmetro -c.

Aqui no Debian, ficou assim:
# htpasswd -c /etc/apache2/passwd.git gituser

Depois de criado o usuário, vamos definir as regras do apache para o diretório do nosso repositório. Geralmente você precisaria adicionar algo assim ao seu httpd.conf:
<Location /meu_repo>
   DAV on
   AuthType Basic
   AuthName "Git"
   AuthUserFile /caminho/para/o/arquivo/de/senha
   Require valid-user
</Location>

Como o Debian lê automaticamente os arquivos em /etc/apache2/conf.d/, eu criei o arquivo /etc/apache2/conf.d/git.conf e adicionei o seguite a ele:
<Location /novo_projeto.git>
   DAV on
   AuthType Basic
   AuthName "Git"
   AuthUserFile /etc/apache2/passwd.git
   Require valid-user
</Location>

Agora, reinicie o apache. No Debian fica assim:
# /etc/init.d/apache2 restart

Neste ponto o servidor já deve estar funcionando corretamente. Para testar, acesse o seu servidor da seguinte maneira:
http://servidor/novo_projeto.git

O servidor peguntará seu usuário/senha. Depois de informá-las, se você ver uma listagem de diretórios e arquivos do git, o servidor está funcionando corretamente.



Configurando o cliente


Agora que o servidor já está configurado, é hora de configurar o cliente.
A primeira coisa a fazer, é informar nosso usuário e senha pra que não tenhamos que ficar digitando isso toda vez... é chato! Fazemos isso adicionando as seguintes linhas ao arquivo $HOME/.netrc:
machine <servidor>
login <usuário>
password <senha>

Como nossa senha está aí, é bom restringir o acesso a este arquivo. Fazemos isto assim:
$ chmod 600 ~/.netrc

Depois disso, precisamos configurar o git para acessar nosso servidor. Isso é muito simples.

$ git config remote.novo_projeto.url http://<usuário>@<servidor>/novo_projeto.git/

OBS: Não esqueça da '/' no final da url, senão você vai cair num redirecionamento eterno...

Bom, aqui já está tudo configurado. Só o que precisamos fazer agora é 'empurrar' os arquivos do projeto para o servidor.
$ git push novo_projeto master
Fetching remote heads...
refs/
refs/heads/
refs/tags/
updating 'refs/heads/master'
from 5b0bc00758855aef6dafe7aa9849443aea0dbf1c
to b4857d97182a582c76961370de489b14385f9af9
sending 13 objects
done

Bom, é isso aí! Git configurado pra usar HTTP. Agora você que decide como usar seu Git.

Comentários

Faça seu comentário