Daemon de GIt e Controle de Acesso para Repos Múltiplos

3

Aqui está a situação, eu tenho uma pasta chamada git que contém vários repositórios git --bare. Isso está no meu servidor, que é o CentOS 5. Meu computador pessoal em casa é um Windows XP.

Eu quero empurrar meus repositórios locais para o meu servidor usando uma conta em uma base por repositório. Eu tenho procurado por horas sem sorte. Aqui está o que eu fiz o que chegou mais perto.

Eu executei um daemon no meu servidor digitando:

git daemon --verbose --base-path=/path/to/git/parent/folder --export-all

Eu então uso o TortoiseGit para enviar o endereço: git: //myserver.com/project e eu recebo isso do daemon:

Connection from XX.XX.XX.XX Extended
attributes (22 bytes) exist
Request
receive-pack for '/project'
'receive-pack': service not enabled
for '/path/to/git/parent/project'
[XXXX] Disconnected (with error)

Eu usei --enable = receive-pack e empurrei com sucesso meu repositório local para o servidor, mas o resultado não era o que eu queria: saber como fazer login como usuário. O Receive-pack permite que todos enviem anonimamente ao servidor.

Eu pesquisei por horas, mas não consigo encontrar como configurar contas de forma independente para cada repositório. Eu li vários artigos dizendo algo sobre SSH, mas não tenho certeza se é isso que eu quero. Tanto quanto eu sei, o SSH é conectar-se com segurança ao meu servidor, entrando em uma conta do Linux no servidor (ou seja, root, userA etc.) E não é isso que eu quero.

Tome o SVN, por exemplo, com o subversion, você pode criar um arquivo .htpasswd com as contas que deseja apenas para aquele repositório específico. Existe uma maneira similar com o Git?

Obrigado.

    
por pek 06.06.2009 / 15:31

3 respostas

7

Confira o gitosis , que é um aplicativo de hospedagem do repositório git. Citando a descrição do pacote Debian de gitosis:

This package aims to make hosting git repositories easier and safer.
It manages multiple repositories under one user account, using SSH
keys to identify users. End users do not need shell accounts on the
server; they will talk to one shared account that will not let them
run arbitrary commands.

Você pode encontrar a fonte da gitosis no link

Documentação sobre como configurá-lo: link

Estou muito feliz com a gitosis, estamos usando no projeto grml ( link ) com mais de 100 repositórios e funciona bem sem problemas.

    
por 06.06.2009 / 16:55
3

Você pode tentar usar o ' git + ssh // ' uri em vez de ' git // '. Isso permitirá que você execute servidores sem servidor (git wise) e conceda permissões de usuários diferentes a cada repositório. Depois de fazer isso, você pode usar

git+ssh://user@remotehost/repos/path/project.git

como local remoto do git.

Para inicializar um repositório vazio, no qual você pode enviar dados, use o comando ' git --bare init ' no host remoto.

    
por 06.06.2009 / 16:23
2

Outra coisa que você pode querer considerar, dependendo do que exatamente você está fazendo, é o Github . Ele funciona muito bem e é barato, é fácil de manter e tem algumas sutilezas como gists, acompanhamento de problemas interno e assim por diante. Eu gosto muito de projetos pessoais e separar os repositórios privados não custa muito para adicionar.

Às vezes vale a pena não ter que fazer isso sozinho.

    
por 10.06.2009 / 04:01

Tags