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.