Vamos configurar os repositórios:
echo "# REPOSITORIOS DEBIAN 7
deb http://ftp.br.debian.org/debian wheezy main
#
deb http://ftp2.de.debian.org/debian/ wheezy main
deb-src http://ftp2.de.debian.org/debian/ wheezy main
#
deb http://security.debian.org/ wheezy/updates main contrib
deb-src http://security.debian.org/ wheezy/updates main contrib" > /etc/apt/sources.list
Atualizando sistema e instalando dependências:
aptitude update
aptitude upgrade -y
aptitude install git-core gitweb python-setuptools
Depois, você clona e instala Gitosis do site principal do projeto:
git clone https://github.com/tv42/gitosis.git
cd gitosis
sudo python setup.py install
Na máquina cliente é necessário criar e copiar a chave:
ssh-keygen
cat /home/usuario/.ssh/id_rsa.pub
Voltando ao servidor vamos colar a chave e inicializar as configurações do gitosis:
nano /home/git/usuario.pub
chown git:git /home/git/usuario.pub
sudo -H -u git gitosis-init < /home/git/usuario.pub
Se tudo der certo aparecerá as linhas abaixo:
Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
Vamos agora configurar a chave:
mkdir /home/git/.ssh/
cat /home/git/usuario.pub >> /home/git/.ssh/authorized_keys
nano /home/git/.ssh/authorized_keys
Adicionar trocando o git@usuario pelo usuário contido na chave pública.
command="gitosis-serve git@usuario",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
Arrumando as permissões:
chown git:git /home/git/.ssh/ -R
Incluindo repositórios no servidor git gitosis
nano /home/git/repositories/gitosis-admin.git/gitosis.conf
cp /home/git/usuario.pub /home/git/repositories/gitosis-admin.git/gitosis-export/keydir/git@usuario.pub
nano /home/git/repositories/gitosis-admin.git/gitosis.conf
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = git@usuario
[group developers]
writable = OlaMundoGIT
members = git@usuario
[repo OlaMundoGIT]
description = Meu primeiro repositorio
owner = git@usuario
Colocando senha no gitweb para acesso restrito editando o arquivo /etc/apache2/conf.d/gitweb:
AuthType Basic
AuthName "Authorization Required"
AuthUserFile /etc/apache2/senhas.txt
Require valid-user
Reiniciar o apache:
/etc/init.d/apache2 restart
Criando o arquivos de senhas:
htpasswd -c /etc/apache2/senhas.txt usuario
New password:
Re-type new password:
Adding password for user usuario
Voltando a máquina cliente vamos testar o repositório OlaMundoGIT criado:
mkdir OlaMundoGIT
cd OlaMundoGIT
# inicializamos o repositorio local
git init
# criamos o arquivo README
touch README
# Escrevemos algum texto no arquivo README
echo "Versao inicial " >> README
# adicionamos ao repositorio todos os arquivos que ainda não foram incluídos
git add .
# fazemos o commit no repositorio local. O git tem o conceito de commit local e remoto
git commit -am "Commit inicial"
# vinculamos o repositorio local ao repositorio remoto
git remote add origin git@IPDOSERVIDOR:OlaMundoGIT.git
# agora enviamos todos os arquivos commitados no repositório local para o repositorio remoto
git push origin master