Servidor Git pessoal com gitolite

Usem o Git, vale a pena. Usem o Github quando puderem, também vale muito a pena. Mas as vezes precisamos de um repositório mais privado, e não estamos afim de pagar para o github (embora vale a pena!) já que temos servidores sobrando.

Entra o gitolite, que permite fácil configuração multiusuário para um repositório Git.

Eis como proceder: Primeiro copie sua chave pública para o servidor (a mesma do github, por exemplo):

$ scp ~/.ssh/id_rsa.pub user@servidor:~/

E então faça ssh para o servidor e se torne root, para seguir os seguintes passos:

# cd
# aptitude install git
# git clone git://github.com/sitaramc/gitolite gitolite-source
# cd gitolite-source
# mkdir -p /usr/local/share/gitolite/conf /usr/local/share/gitolite/hooks
# src/gl-system-install /usr/local/bin /usr/local/share/gitolite/conf /usr/local/share/gitolite/hooks
# useradd git -d /home/git -g users -m -s /bin/bash
# su - git
$ gl-setup /home/user/id_rsa.pub

Atenção: assumi que seu usuário padrão no servidor é user, se não for troque as ocorrências. Pronto assim temos o básico pronto, agora sobre operação geral.

Você pode configurar uma interface de consulta básica na web usando o próprio git, ainda no user git faça:

$ cd repositories/testing.git
$ git instaweb -d webrick -p 8081

Agora pode acessar seu servidor na porta 8081 para navegar nos projetos. Não precisamos mais estar no servidor para os próximos passos.

Então vamos criar um novo repo e adcionar usuários, da sua maquina:

$ git clone git@servidor:gitolite-admin.git
$ cd gitolite-admin

Nessa pasta edite o arquivo conf/gitollite.conf, nessa sintaxe:

repo nome-do-repositorio
  RW+ = user1 user2 user3

Sendo user1 user2 e user3 os usuários com acesso para escrita. O repositório será criado vazio e e para liberar os usuários basta copiar as chaves publicas para a pasta “keydir”, no formato “user1.pub” e etc. Agora envie as alterações.

$ git commit -a -m 'adionado repositorio nome-do-repositorio'
$ git push

Congratz, you got git!