Configurando Git no servidor - "smart" HTTP
Hoje vou demonstrar como configurar o Git num servidor Linux usando Apache como server, com o protocolo HTTP("smart" HTTP), permitindo a colaboração dos membros de sua equipe.
Tenho utilizado Git há 4 anos em projetos particulares e nos meus experimentos, no trabalho utilizo uma "solução" da Microsoft. Sem duvida nenhuma Git é o melhor controle de versão existente, não da nem pra comparar com os outros, Git é de longe o melhor, não há motivos técnicos para não usá-lo, além de ser muito simples aprender a utiliza-lo (a menos que você seja apenas um usuário de IDE que só sabe clicar, igual um macaco treinado LOL... ai fica um pouco difícil, mas vai acabar sendo treinado com o tempo). Nunca precisei configurar um servidor Git, pois utilizo serviços como GitHub e Bitbucket, mas configurar o Git num servidor pra rodar numa intranet é bem simples e pode ser feito de várias maneiras.
O Git suporta os seguintes protocolos: Local, HTTP("smart" HTTP), SSH e protocolo Git. Atualmente o protocolo HTTP ("smart" HTTP) tem sido o mais utilizado. Ele é chamado de "smart" HTTP pois antigamente existia o suporte HTTP, mas ele era muito limitado, mas na versão 1.6.6 do Git, o suporte ao protocolo HTTP recebeu grandes melhorias, tornando-se excelente, ficando conhecido como "smart" HTTP, com ele você pode ter acesso anônimo ou autenticado com criptografia.
Para rodar o Git com o protocolo HTTP é necessário um servidor com suporte a CGI, pois quem vai fazer todo o trabalho é um script CGI chamado git-http-backend que já vem junto com o Git, eu utilizei o Apache mas poderia ser qualquer outro servidor com suporte a CGI.
O que foi utilizado nesta demonstração:
- Ubuntu 14.04-LTS
- Git 2.2.1
- Apache 2.4.7
Instalando o Git
Você pode instalar o Git com apt-get ou se você quiser a versão mais recente do Git, você pode baixar o código-fonte dele e compilar.Recomendo que compile a ultima versão, depois você pode clonar o repositório do Git, e fazer um pull ou fetch+merge para receber as atualizações direto do repositório.
git clone git://git.kernel.org/pub/scm/git/git.git
Configuração do servidor Apache
Para instalar o Apache:Habilitar módulos mod_cgi, mod_alias, mod_env e auth_digest do Apache:
Depois de ter instalado o apache e os módulos, é necessário criar um "Virtual Host" onde o Git rodará na intranet, eu utilizei este domínio de exemplo: http://git.exemplo/, para fins de testes eu configurei o meu /etc/hosts com este domínio.
Configuração do arquivo /etc/apache2/sites-available/git.conf :
Crie um arquivo 'Virtual Host' chamado git.conf, nele estão setadas variáveis de ambiente do apache para dizer onde estão os repositórios Git, configura o apache para que toda URL que tiver /git seja manipulada pelo CGI git-http-backend e como o apache deve lidar com a autenticação.
- Local onde estão os repositórios Git: /var/www/git/git
- Local do arquivo de autenticação dos usuários: /var/www/git/.htpasswd
Criando um repositório Git Remoto
Agora que o servidor já está configurado é necessário criar o repositório remoto. O repositório deve ficar no local que foi configurado no apache: /var/www/git/git.
Pronto ;) agora seus amiguinhos podem colaborar neste repositório remoto através da rede utilizando o Git.Um usuário previamente criado no /var/www/git/.htpasswd que tenha acesso ao servidor na rede, após autenticação pode fazer um git clone e começar a colaborar neste repositório.
Referências
- Livro Pro Git - segunda edição
- https://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html
- http://httpd.apache.org/docs/current/howto/auth.html