Hospedando um repositório Git em seu servidor
Atualmente o meu sistema de controle de versão favorito é o git. Para projetos de código aberto não é necessário pensar duas vezes: hospede no github.
Na hora de trabalhar com código proprietário, o “segredo” do seu produto/empresa, você tem duas escolhas: pagar por uma conta no github ou hospedar em seu próprio servidor. Já experimentei os duas alternativas e posso afirmar que pago os U$12,00 mensais do github com muito prazer.
Porém, caso você goste de fortes emoções, esteja passando por tempos de vacas magras ou de paranóia, não custa nada relatar o que eu considero ser a melhor maneira de hospedar seu próprio repositório git: Gitosis
Para instalar:
git clone git://eagain.net/gitosis.git cd gitosis python setup.py install
Agora é a hora de adicionar o usuário que será dono dos repositórios, vamos chamá-lo de … git !
sudo adduser \ --system \ --shell /bin/sh \ --gecos 'git version control' \ --group \ --disabled-password \ --home /home/git \ git
Copie sua chave pública ($HOME/.ssh/id_rsa.pub) para o servidor git. Para gerar a chave:
ssh-keygen -t rsa
No servidor git, vamos adicionar sua chave à lista de chaves autorizadas:
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
Agora … a magia do gitosis, em sua máquina local:
git clone git@SEU_SERVIDOR:gitosis-admin.git cd gitosis-admin
Voce terá um arquivo gitosis.conf e uma pasta keydir/
Esse repositório que você acabou de clonar contém os arquivos necessários para criar e administrar os repositórios git no servidor. Assim que você fizer push, o gitosis irá automaticamente fazer as mudanças necessárias no servidor.
Ou seja, você gerenciará seu servidor git com o git ! Além disso, a partir desse momento o login no servidor não será mais necessário, afinal basta fazer as atualizações localmente e o commit/push.
Para criar um repositório, basta editar o arquivo gitosis.conf:
[gitosis] [group gitosis-admin] writable = gitosis-admin members = victor # nome do arquivo com a chave publica, sem o ".pub" #Para criar um novo repositório, bastar dar permissões de escrita nele: [group minha_equipe] members = victor writable = top_secrect git commit -a -m "Dando permissão a victor no repositorio top_secret" git push
Agora, o usuário “victor” tem acesso ao respositório, porém este não foi criado ainda, isso precisa ser feito localmente, seguido de um push:
mkdir top_secrect cd top_secrect git init git remote add origin git@SEU_SERVIDOR:top_secrect.git touche README git add . git push origin master
Com esse push o repositório já foi criado e agora é só usar normalmente.
Para adiconar mais usuários basta colocar a chave deles em keydir/username.pub
Aproveite seu servidor de repositórios git, ou não :)