gitosis vs gitolite? [fechadas]

139

Estou procurando instalar um servidor git para compartilhar projetos com minha equipe. Não quero criar uma conta de usuário no servidor com acesso SSH para cada desenvolvedor que precise de um acesso git. Parece que existem duas soluções concorrentes que cobrem esse problema: gitosis e gitolite.

Não encontrei nenhuma comparação entre as duas soluções. Quais são as principais diferenças entre eles? Existe outra solução semelhante?

greydet
fonte

Respostas:

191

Estou procurando instalar um servidor git para compartilhar projetos com minha equipe.

Você pode apenas usar git.

Para ter um servidor git, a única coisa que você precisa no servidor remoto é git. Se você não precisar de permissões refinadas (o compartilhamento apenas com sua equipe sugere que isso é uma possibilidade) ou qualquer recurso extra, não precisará de gitolite ou similar.

A solução sem instalação

Se o git estiver disponível no servidor remoto, você poderá fazer o que está pedindo agora, sem fazer nada

ssh [user@]server
cd repos/are/here/
mkdir project.git
cd project.git
git init --bare

Localmente:

cd projects/are/here/project
git remote add origin [user@]server:repos/are/here/project.git
git push -u origin master

Configurar um servidor git é fácil.

Se você deseja fazer as coisas com um usuário git dedicado, os documentos para configurar um servidor git são curtos - porque é realmente muito fácil de fazer.

Em suma:

  • Instale o git
  • Crie um usuário chamado git
  • Adicione suas chaves públicas e de sua equipe ao .ssh/authorized_keysarquivo do usuário git
  • Mude o shell do usuário git para ser git-shell
  • Criar repositórios no servidor
  • inicie o git pull / empurrando para [email protected]

A única diferença entre o uso de um usuário git dedicado e não é que, se você configurar o usuário git, git-shellele não se permitirá fazer mais nada. Porém, em termos de atuar como um servidor git, é idêntico à solução sem instalação

AD7six
fonte
13
Depois de instalar a fera que é GitLab + Gitolite, se você não precisar de um bom controle sobre os projetos, etc., este é o caminho.
Andrew T Finnell
Obrigado por esta resposta! Na verdade, quando eu disse que não queria criar contas de usuário para cada uma delas, também deveria ter mencionado que não quero que meus usuários do git tenham acesso ao shell do servidor através do ssh. Com sua solução, acho que eles teriam acesso ao shell através do usuário "git", certo?
greydet
2
@ wsams: git push -u origin mastere você pode usar git pushdepois dele. Prefiro o gito * porque, na minha opinião, ninguém acessando um repositório deve se preocupar com o caminho absoluto que ele possui no sistema remoto.
ThiefMaster
8
@ThiefMaster adivinhando o que você quer dizer, se você colocar repositórios no /home/git/URL para acessar um projeto git@server:project.git.
AD7six
1
@wsams leia esta parte da resposta "Altere o shell do usuário do git para git-shell".
Fabspro 18/05
142

A principal diferença é que a gitose agora está obsoleta e não é mais mantida ativamente.

Gitolite é muito mais completo , e acaba de lançar sua terceira versão .

Seu recurso mais interessante é o Virtual Reference (VREF, abreviado), que permite declarar quantos ganchos de atualização você deseja, o que permite restringir um envio pressionando:

  • dir / nome do arquivo :
    digamos que você não queira que os desenvolvedores juniores façam alterações no Makefile, porque é bastante complexo:
    - VREF/NAME/Makefile = @junior-devs

  • número de novos arquivos :
    digamos que você não queira que os desenvolvedores juniores enviem mais de 9 arquivos por confirmação, porque deseja que eles façam pequenas confirmações:
    - VREF/COUNT/9/NEWFILES = @junior-devs

  • detecção avançada de tipo de arquivo :
    Às vezes, um arquivo possui uma extensão padrão (que não pode ser 'ignorada'), mas na verdade é gerado automaticamente. Aqui está uma maneira de capturá-lo:
    - VREF/FILETYPE/AUTOGENERATED = @all
    Veja src/VREF/FILETETYPEpara ver o mecanismo de detecção.

  • verificando o e - mail do autor :
    algumas pessoas querem garantir que "você só pode enviar seus próprios commit".
    - VREF/EMAIL-CHECK = @all
    Veja src/VREF/EMAIL-CHECK.

  • votação sobre commits :
    A implementação básica de votar em um commit é surpreendentemente fácil:
    - VREF/EMAIL-CHECK = @all.
    # 2 votes required to push master, but trusted devs don't have this restriction
    # RW+ VREF/VOTES/2/master = @trusted-devs
    # - VREF/VOTES/2/master = @devs
    Veja src/VREF/VOTESpara a implementação.

  • e assim por diante...

VonC
fonte
3
Uso o Gitolite há mais de 3 anos. Nunca tive problemas com isso. Nossos servidores de produção e armazenamento temporário têm acesso somente leitura aos repositórios de necessidade. E é um trabalho fácil compartilhar um projeto com outras equipes de desenvolvimento. Também é fácil de configurar se você sabe unix e já git :)
complistic
Documentação Gitolite inclui comparações com as alternativas: gitolite.com/gitolite/gitolite.html#alt
Quinn Comendant
15

Apenas uma nota de rodapé. Você também pode usar o Gerrit para suas necessidades:

Revisão do Código Gerrit

Primeiro, parece que o Gerrit é usado para a revisão de código, mas você também pode usá-lo também para gerenciar usuários e conceder boas permissões definidas. Você pode ignorar a revisão de código (através dos controles de acesso ) e usá-lo apenas para gerenciar projetos e chaves ssh. A Gerrit possui um mecanismo de controle de acesso realmente forte:

Controles de acesso Gerrit

Você pode restringir o envio por ramificações, tags ou qualquer coisa que possa imaginar definida no documento de controles de acesso.

Fatih Arslan
fonte
8

Para uma solução ainda mais rápida e suja, basta usar o daemon git e ir ponto a ponto. Aqui está um artigo sobre como fazer exatamente isso.

Edit: Eu reconheço que isso não responde estritamente à pergunta do OP. Coloquei isso aqui principalmente para aqueles que, como eu, se deparam com isso enquanto procuram uma maneira simples e barata de compartilhar código até que uma conta do github corporativo seja configurada.

Tim Keating
fonte
2

Eu tenho mexido por um tempo para obter um servidor git trabalhando com acesso LDAP, controle de acesso refinado, etc ... Encontrei uma revelação: Use o Gitlab :

  • repositórios git
  • acesso granular (o afaik gitlab usa gitolite sob o capô)

se você deseja o método de instalação rápida e rápida: use o instalador bitnami

Chris Maes
fonte
Sim, mas o GitLab (com gitlab-shell) perdeu todos os ganchos VREF que você pode configurar facilmente com o Gitolite. E um monte de gente gostaria-los de volta: github.com/gitlabhq/gitlab-shell/issues/14 e github.com/gitlabhq/gitlab-shell/pull/85
VonC