Tenha seu próprio servidor Git | TUTORIAL
Tenha seu próprio servidor Git
TUTORIAL
Repositórios
sob controle
O Git, obra de Linus Torvalds, conquistou os desenvolvedores como gerenciador de versões
de código. Conheça duas abordagens para colaboração em grupos de trabalho, onde
você pode configurar facilmente seu próprio servidor Git para armazenar seus repositórios.
por Oliver Frommel
O
Git [1] é um sistema P2P
(plataforma de compartilhamento peer-to-peer ou
ponto a ponto), de forma que não é
necessário um servidor para utilizá-lo.
No entanto, se vo cê está desenvolvendo software ou trabalhando em
arquivos pertencentes a um grupo
de trabalho, um repositório central
do qual possa ser feita uma cópia de
segurança é uma boa ideia.
Há serviços na Internet que fariam
o mesmo trabalho, como o Gitorious
[2] ou o onipresente GitHub [3], que
são gratuitos para projetos open source.
O serviço comercial fornecido pelaGitHub custa de US$25, até US$200
mensais para o serviço Platinum. O
Gitorious [4] custa US$99 para que
você tenha seu próprio subdomínio.
Ao instalar seu próprio servidor
Git, você pode contar com diversas
abordagens de compartilhamento do
conteúdo. As duas mais populares
são o Gitolite [5] e o Gitosis [6]. As
duas ferramentas estão disponíveis
no GitHub. O Gitolite é escrito
em Perl e o Gitosis em Python, mas
apesar das linguagens diferentes, os
aplicativos são bem similares. Várias
distribuições (como Fedora e Ubuntu)
incluem os dois programas em seu
repositório de pacotes, o que torna
a instalação muito fácil. As duas ferramentas usam diferentes métodos
de instalação, levando a diferentes
passos de configuração. Os requisitos básicos para a configuração de
um servidor Git são um diretório
para a configuração e repositórios,
uma conta de usuário e chaves SSH
necessárias para realizar autenticação.
O acesso aos repositórios Git sempre depende de SSH, o que significa
que os servidores Git não precisam
de uma porta separada. Teoricamente, você poderia instalar o Gitosis
de forma paralela ao Gitolite, mas
com um ID de usuário separado
para cada caso.
Gitolite
No Ubuntu, o Gitolite instala o pacote, mas não configura o usuário no diretório. No Fedora, quando você completa a instalação de um pacote, você
tem um usuário gitolite e um diretório
/var/lib/gitolite para os repositórios.
Listagem 1: .ssh/authorized_keys
01 # gitolite start
02 command="/usr/local/bin/gl-auth-command ofrommel",
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
ssh-dss AAAAB3NzaC1kc3MAAACBAOvwG6F0D2v2J8d+RsQFwozOqqFAgGkMfDK86TUA
04 ...
05 # gitolite end
Linux Magazine #92 | Julho de 2012
Descreverei como instalá-lo manualmente com uma conta de usuário
git e um diretório /home/git. A figura
1 mostra o início da instalação.
Como um futuro administrador
de um servidor Git, você precisa de
uma cópia de sua chave SSH pública
(de uma estação de trabalho/computador cliente) para autenticar-se no
servidor e deve depositá-la em um
diretório acessível pela conta de usuário git (como o diretório tmp):
scp .ssh/id_dsa.pub
Server:/tmp/ofrommel.pub
Se você não possui um par de
chaves SSH, execute o aplicativo
ssh-keygen para criar um. No servidor Git, é necessário, em primeiro
lugar, baixar o software do GitHub:
git clone
git://github.com/sitaramc/gitolite
Ainda trabalhando como root, execute o script de instalação, que instala
os programas do Gitolite globalmente:
# gitolite/src/gl-system-install
using default values for EUID=0:
/usr/local/bin /var/gitolite/conf
/var/gitolite/hooks
Você pode fazer isso como usuário
git, mas dessa forma todos os arquivos
serão armazenados no diretório deste
usuário. Em seguida, você pode usar
seu ID de usuário ao digitar su - git
75
TUTORIAL | Tenha seu próprio servidor Git
e então importar sua chave pública
SSH para o Gitolite:
gl-setup /tmp/ofrommel.pub
Será exibido o arquivo de configuração /home/git/.gitolite.rc
novamente. Normalmente, não há
problemas em manter as configurações padrão. Agora é possível copiar
o repositório de administração do
Gitolite para o computador cliente.
As tarefas de administração serão
padronizadas: edite a configuração
localmente e então suba as mudanças
para o servidor. O seguinte comando
clona o repositório:
git clone [email protected]:
gitolite-admin.git
Se a conexão falhar, a configuração
do SSH pode estar com algum problema. O arquivo .ssh/authorized_keys,
presente no computador do usuário,
deve se parecer com a listagem 1. A
parte importante é a linha command=.
Se tudo funcionar como o esperado, você terá um novo diretório,
gitolite-admin, com dois diretórios com os nomes conf e keydir.
Em seguida, edite o arquivo conf/
gitolite.conf para criar um novo
repositório. Por padrão, ele conterá
um repositório de teste:
repogitolite-admin
RW+= ofrommel
repotesting
RW+= @all
Você precisa adicionar as chaves
públicas para os outros usuários
Git (com nomes de arquivo correspondentes) no subdiretório keydir
e subir as mudanças como descrito
anteriormente. Para mais informações – como, por exemplo, sintaxe
dos comandos, vá ao arquivo $HOME/
share/gitolite/conf/example.conf no
servidor Git ou no arquivo /var/gitolite/conf/example.conf. Uma terceira
opção é fazer buscas no exaustivo
wiki do Gitolite [7].
Gitosis
O Gitosis funciona basicamente da
mesma forma que o Gitolite: é necessário possuir de uma conta de
usuário especial com uma configuração SSH para executar os scripts
correspondentes. Se sua instalação
do Gitosis estiver no Ubuntu, será
possível perceber que existe uma
conta de usuário gitosis e um diretório /srv/gitosis presentes no sistema. De forma similar ao Gitolite,
o Fedora também cria um diretório
var/lib/gitosis para o Gitosis, com
uma conta de usuário para correspondência. Novamente, vou demonstrar a instalação manual para deixar
a abordagem clara.
Para começar, obtenha o software
Gitosis no repositório GitHub:
git clone
git://eagain.net/gitosis.git
Ainda trabalhando como usuário
root, mude o diretório do Gitosis e
execute o comando python setup.py
install para instalar os arquivos de
forma global. Então, copie sua chave
pública para o servidor da mesma forma que foi feito para o Gitolite, mude
o usuário (su - git) e continue trabalhando com o usuário git. Instale o
Gitosis com os seguintes comandos:
gitosis-init < /tmp/ofrommel.pub
Initialized empty Git repository
in /home/git/repositories/
gitosis-admin.git/
Reinitialized existing Git
repository in /home/git/
repositories/gitosis-admin.git/
Se alguma mensagem de erro reclamando de problemas de permissão
for exibida, é possível que você esteja
trabalhando com o Gitosis no diretório home do usuário root, no qual você
não tem permissão de sobrescrever
arquivos como um usuário git.
Assim como no Gitolite, a administração no Gitosis usa um repositório especial. Você pode incluir um
em seu cliente da seguinte forma:
git clone [email protected]:
gitosis-admin.git
O diretório gitosis-admin agora
contém o arquivo de configuração
gitosis.conf e o diretório keydir para
as chaves SSH. A configuração, para
a qual um grupo de webcoders e um
novo repositório de webproject foram
Como você pode observar, somente
a conta de usuário ofrommel (dono da
chave) leu e acessou o repositório gitolite-admin. Para criar um novo repositório, copie a entrada de teste (ambas
as linhas) e modifique seu conteúdo.
Feito isso, confirme as mudanças ao
digitar o comando git commit -a. O
comando git push sobe as mudanças
para o servidor, o que confirma que o
novo repositório foi criado:
Initialized empty Git repository in
/home/git/repositories/project.git/
76
Figura 1 Instalação do Gitolite.
www.linuxmagazine.com.br
Tenha seu próprio servidor Git | TUTORIAL
adicionados, pode ser conferida na
listagem 2. Em seguida, envie as
mudanças para o servidor com o
comando commit -a e git push.
Para criar um novo projeto, crie um
novo diretório chamado webproject.
Em seguida, execute os seguintes
comandos para iniciar o repositório:
git init
git remote add origin
[email protected]:webproject.git
[gitosis], insira uma linha com o conteúdo loglevel = DEBUG e então jogue os
resultados no servidor da forma usual.
Para mais informações sobre o uso
do Git, confira um artigo publicado
anteriormente na Linux Magazine
[8] ou o livro Pro Git [9], disponível
gratuitamente online.
Listagem 2: gitosis.conf
Após adicionar novos arquivos para
o diretório, submeta-os ao gerenciador
de versão com o comando git add.
Para sincronizar o repositório com o
servidor para todas as partes, execute
novamente o comando:
01 [gitosis]
02
03 group
04 members =
[email protected]
05 writable = gitosis-admin
06
07 group
08 members = ofrommel@riker.
linux-magazin.de
09 writable = webproject
git push origin
master:refs/heads/master
Gostou do artigo?
igo?
Se um erro ocorrer com o uso do
Gitosis, você pode habilitar mensagens de debug ao abrir o arquivo de
configuração gitosis.conf. Na linha
Tem
novidade
na Coleção
Academy!
Queremos ouvir sua opinião.
inião.
Fale conosco em
[email protected]
ne.com.
Este artigo no nosso
sso site:
s
http://lnm.com.br/article/7147
r/artic 7147
Se você gostaria de ter uma visão
dos seus repositórios em um navegador
web, use o Gitweb como uma interface gráfica, embora ele não lhe ofereça
o visual interessante do GitHub. ■
Mais informações
[1] Git: http://git-scm.com/
[2] Gitorious em código aberto:
http://gitorious.org/
[3] GitHub: https://github.com/
[4] Gitorious comercial: http://
gitorious.com/
[5] Gitolite: https://github.
com/sitaramc/gitolite
[6] Gitosis: https://github.
com/res0nat0r/gitosis
[7] Wiki do Gitolite: http://
sitaramc.github.
com/gitolite/
[8] “Git no controle” por Juliet
Kemp, Linux Magazine 68,
Junho de 2010, pág. 60
[9] Chacon, Scott, Pro Git. Apress,
2009: http://progit.org/book
Instalação e congifuração de
servidores VoIP com Asterisk.
Configuração de ramais,
extensões, secretária eletrônica,
monitoramento e espionagem
de chamadas, planos de
discagem, URA e muitos outros
aspectos que abordam o uso de
centrais telefônicas IP PBX.
Disponível no site
www.LinuxMagazine.com.br
Linux Magazine #92 | Julho de 2012
77
Download

Repositórios sob controle