Há várias formas para começar usar um servidor git. Dentre elas podemos citar:
É possível apenas instalar o git em um servidor e colocar os repositórios em pastas públicas do servidor.
Outra possibilidade é hospedar utilizando algum serviço web como por exemplo github e o gitorious
O Gitorious pode ser instalado em um servidor próprio como mostrado no tutorial do Akita
Outro modo bem rápido de se instalar o servidor git, utilizando ssh é através do Gitosis.
Segui o tutorial em http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way e não tive problemas na instalação. E é este artigo que segui como base para fazer este post.
Fiz a instalação no ubuntu e o que fiz foi:
Primeiramente voce deve ter o git instalado no seu servidor. Caso não tenha basta utilizar o apt para instalar
sudo apt-get install git-core
Após instalado o git, deve-se baixar o gitosis.
git clone git://eagain.net/gitosis.git
Depois de baixar o gitosis deve-se instalá-lo, para isto:
cd gitosis
python setup.py install
Caso receba uma mensagem como:
-bash: python: command not found
ou
Traceback (most recent call last):
File "setup.py", line 2, in ?
from setuptools import setup, find_packages
ImportError: No module named setuptools
Estas mensagens ocorrem porque voce não tem o pacote python-setuptools instalado. Para instalá-los basta:
sudo apt-get install python-setuptools
Após instalado o pacote python-setuptools execute a instalação do gitosis novamente.
Com o gitosis instalado, agora voce deve criar um usuário para o git. O usuário que o autor recomenda é o usuário git, sem password válido, e ele pode ser criado com o comando:
sudo adduser \
--system \
--shell /bin/sh \
--gecos 'git version control' \
--group \
--disabled-password \
--home /home/git \
git
Se a criação do usuário foi feita com sucesso, deve aparecer algo como:
Adding system user `git'...
Adding new group `git' (211).
Adding new user `git' (211) with group `git'.
Creating home directory `/home/git'.
Após criado o usuário no servidor, é necessário criar uma chave rsa no seu computador. Para isto utilizamos o ssh-keygen e o comando para criar uma chave rsa é (digitado no seu computador):
ssh-keygen -t rsa
Após executado o comando a chave pública e privada são criadas em ~/.ssh
Para copiar a chave gerada para o servidor podemos utilizar o comando abaixo:
scp .ssh/id_rsa.pub git@ENDERECO DO SERVIDOR:/tmp
No servidor, para iniciar o servidor basta digitar:
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
É necessário ter permissão no arquivo post-update, portanto digite:
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
Agora em sua máquina execute:
git clone git@ENDEREÇO DO SERVIDOR:gitosis-admin.git
cd gitosis-admin
No diretório gitosis-admin haverá um arquivo chamado gitosis.conf que será utilizado para a configuração do gitosis.
Adicionando um novo projeto
Para se adicionar um novo projeto adicione as linhas no gitosis.conf com as informações do seu novo projeto:
[group meu_time]
members = nome_do_usuario
writable = nome_novo_projeto
Deste modo, voce criará permissão para o usuário no seu novo projeto
Após alterado o arquivo gitosis.conf dê commit nele para o servidor:
git commit -a -m "Permissão de acesso ao novo projeto para o usuário"
git push
Agora deve-se criar o repositório e enviá-lo:
mkdir nome_novo_projeto
cd nome_novo_projeto
git init
git remote add origin git@NOME_SERVIDOR:nome_novo_projeto.git
#Adicione arquivos e dê commits (git add, git commit)
git push origin master:refs/heads/master
Adicionando usuários
Para adicionar usuários, deve-se copiar as chaves públicas para o diretório gitosis-admin/keydir
cd gitosis-adimn
cp ~/jose.pub keydir/
cp ~/maria.pub keydir/
git add keydir/jose.pub keydir/maria.pub
no arquivo gitosis.conf adicione:
[group meu_time]
members = nome_do_usuario maria joao
writable = novo_projeto
Dê commit e push:
git commit -a -m "Adicionar permissão à Maria e João ao novo projeto"
Agora Maria e João têm acesso ao novo_projeto.
No windows:
Para adicionar as chaves no windows, criei as chaves utilizando o ssh-keygen no mac
(Lembre-se que ao gerar a chave em outro computador, voce deve editar a chave pública e alterar o usuário pois a chave será gerada para o usuário que está logado no computador que a chave for gerada)
ssh-keygen -t dsa -f
Depois copie para a pasta “c:\Documents and Settings\\.ssh” com os nomes “id_dsa” e “id_dsa.pub”
Utilizando o ssh em outras portas
Para se utilizar o ssh em outras portas deve-se alterar o arquivo ~/.ssh/config
Host meuservidor.com
Port 1234
12 comments ↓
cade o dito techtalk sobre o git? A equipe está no aguardo
Há um typo nesta linha “cd gitosis-adimn”
Rapaz, estou seguindo os passos propostos…
Quando chego no momento de executar o comando
scp .ssh/id_rsa.pub git@ENDERECO DO SERVIDOR:/tmp
me pede um password….
Alguma idéia do que pode ser?
O comando scp utiliza ssh para copiar um arquivo. Portanto ao digitar o comando scp .ssh/id_rsa.pub git@ENDERECO DO SERVIDOR:/tmp voce está tentando acessar o seu servidor utilizando o usuário git que voce criou e provavelmente o password é relativo a ele. É indicado criar o usuário git sem password (como é feito no comando acima) portanto voce pode substituir o usuário git por um usuário que possa logar no sistema ou criar uma senha para o usuário git. O objetivo deste comando é consegui transferir sua chave criada para o servidor!
[…] o tutorial que encontrei no Dito.blog, conseguí utilizar o gitosis para gerenciar meus repositórios git! Encontrei alguns problemas que […]
No meu ubuntu, mesmo usando o comando –disabled-password, o ssh pede a senha. A solução pra isso foi definir um password pro usuário git (sudo passwd git) e informá-la quando solicitada.
Tomei a liberdade de blogar (no meu recém-criado blog) sobre este assunto e linkei o seu post. Algum problema acerca disso?
Ok Filipe, sem problemas!
Fala bruno tudo bem? rapaiz, estou com uns problemas aqui! quando tento fazer o clone ele da este erro:
“fatal: ‘gitosis-admin.git’: unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly
”
O que pode ser isso? Abraço
Blz Adriano?
Me parece ser um problema de permissão na chave de acesso, em que o usuário git não está conseguindo acessar o diretório onde está o repositório.
Você conseguiu executar todos os comandos de configuração da chave de acesso com sucesso? (gerar chave, copiar para o servidor e executar o gitosis utilizando ela)
O comando “sudo -H -u git gitosis-init < /tmp/id_rsa.pub” deve ser executado no servidor e ele cria as pastas necessárias dentro de /home/git. Verifique se exite a pasta /home/git/repositories que é a pasta onde o gitosis salva os repositórios.
Abraço
Baum também =) mais veja hehehehe acho que o erro está na chave ssh, pois aqui no meu computador já utilizo chaves de acesso ssh. Então eu preciso de uma chave ssh para o user git?
abraços
Opa eu coloquei a chave agora no authorizedkeys do user git mas mesmo assim voltou a dar o mesmo erro! aoo lasqueira. …
Oi Adriano, o comando no “scp .ssh/id_rsa.pub git@ENDERECO DO SERVIDOR:/tmp” o arquivo id_rsa.pub deve ser o arquivo da chave que voce utiliza no seu pc. Este comando serve para copiar a chave do seu pc para o seu servidor para a pasta /tmp. Depois que for copiada voce digita o comando no servidor “sudo -H -u git gitosis-init < /tmp/id_rsa.pub” para iniciar o gitosis com o usuário git (-u git) utilizando a chave /tmp/id_rsa.pub que é a chave que voce copiou para o servidor no comando anterior entendeu? Talvez as chaves do seu pc e da inicialização do gitosis estejam diferentes.
Leave a Comment