Hospedando vários repositórios (svn, hg, git)

8

Recentemente, adquiri um servidor dedicado e preciso mover vários repositórios para ele a partir de um serviço de hospedagem de controle de origem. Tendo pouca experiência em administração de servidores, no entanto, não tenho idéia de como organizá-lo efetivamente. O que eu procuro -

  1. subdomínios svn.host.com, hg.host.com, git.host.com que serão raízes dos diferentes repositórios, por meio de chaves SSH
  2. fácil criação de novos repositórios
  3. autenticação usando a lista de usuários do servidor unix, mas com permissões por projeto, também acesso público somente leitura opcional para alguns dos repositórios

Infelizmente, qualquer termo de pesquisa que eu experimente no Google direciona-me para soluções hospedadas comerciais, e não para orientar sobre como criar minhas próprias. Preciso de algo como uma solução hospedada simplificada, mas sem a necessidade de que os usuários possam criar seus próprios repositórios.

Alguma sugestão, tutorial ou solução com script sobre por onde começar a pesquisa? Uma solução de código aberto para uma interface administrativa para lidar com isso (ou pelo menos para alguns seria perfeito ...

Kornel Kisielewicz
fonte

Respostas:

6

Eu só uso o Git, então tentarei pelo menos ajudá-lo com isso:

Se você não encontrar nenhum problema ao administrar seus repositórios por meio da linha de comando, a gitosis deve fazer o truque de maneira bastante agradável.

Se você realmente precisa de uma interface da web, consulte repo.or.cz ( http://repo.or.cz/w/girocco.git ) ou gitorious ( http://gitorious.org/gitorious ) . Repo.or.cz é mais feio, mas é muito mais fácil de instalar (gitorious é de código aberto, mas também é o software que impulsiona o gitorious.org - eles não têm muito incentivo para escrever boas instruções)

Aqui está uma lista mais abrangente de opções: https://git.wiki.kernel.org/index.php/GitHosting

Qualquer uma dessas opções permitirá criar facilmente novos repositórios.

Agora, uma palavra de cautela: você nunca deve NUNCA usar a lista de usuários do servidor unix para obter permissões de repositório. É fácil o suficiente para mexer, e os resultados são facilmente catastróficos (a gitosis usa uma configuração de arquivo simples e as teclas ssh. Deveriam fazer o truque para você).

Outra coisa, não vejo por que você precisa ter repositórios subversion, HG e Git. A maioria dos projetos usa apenas uma dessas opções. Gostaria de elaborar por quê?

Tiago Fassoni
fonte
Tenho vários projetos, realizados em vários repositórios. Muitos comissários não são especialmente conhecedores de tecnologia e, portanto, hg e git seriam um problema para eles, então mantenho svn para os projetos mais abertos. Pessoalmente, uso o HG como meu SCM de escolha. Também hospedo alguns projetos para meus amigos e alguns deles usam o git como seu SCM de escolha. Não há forma de agradar a todos como parece :)
kornel kisielewicz
1
Além disso, você poderia elaborar mais sobre os perigos do uso da lista de usuários unix para obter permissões de repo?
Kornel Kisielewicz
3
Por que usar a lista de usuários unix para repositórios é uma coisa ruim: perda de granularidade, perda de portabilidade. Se você precisar alterar os repositórios para outro servidor, precisará mover toda a lista de usuários unix. Se você quiser delegar permissões de administrador, precisará fornecer permissões de root. Agora, na gitosis, se você deseja alterar o servidor, basta clonar o repositório. Se você deseja delegar permissões de administrador, basta adicionar o usuário ao grupo gitosis-admin.
Tiago Fassoni 2/11/11
just_testing, acordados, pontos válidos :)
kornel kisielewicz
2

O SVN pode ser feito com o Apache WebDAV, em um vhost, usando a autenticação unix e as ACLs no nível do usuário do subversion. Não sei nada sobre mercurial ou git, mas espero que eles também possam estar ligados ao DAV.

draeath
fonte
1

Quando você deseja usar o SSH , basicamente precisa restringir as chaves editando o authorized_keysarquivo no servidor. Para a Mercurial, as principais maneiras de fazer isso são:

  • Você pode usar o contrib/hg-sshscript para restringir os comandos que as pessoas podem executar ao efetuar login com SSH. O arquivo contém um cabeçalho para explicar como usá-lo, mas você basicamente adiciona

    $ command="hg-ssh path/to/repo"
    

    na frente da chave no authorized_keysarquivo. Isso restringe a chave para que ela possa ser usada apenas como push e pull no repositório indicado.

  • Você também pode usar a ferramenta de servidor mercurial de terceiros, se quiser algo como gitois . Isso permite que você gerencie usuários e seus direitos de acesso editando arquivos em um repositório de administração especial.

Veja o wiki do Mercurial para outras ferramentas similares para SSH.

Para HTTP , existem

  • O hgwebscript CGI ou WSGI integrado (Rápido) que acompanha o Mercurial. Isso lida com empurra e puxa, mas não permite a criação de novos repositórios - faça o login no servidor para isso.

  • O projeto RhodeCode de terceiros . Isso fornece um front-end da Web semelhante ao Bitbucket para Mercurial, onde você pode configurar usuários e seus direitos de acesso. Ele suporta autenticação LDAP, para que você possa conectá-lo ao seu banco de dados de usuários Unix existente.

Veja a página de publicação de repositórios para obter mais informações.

Martin Geisler
fonte
1

O SCM-Manager pode ser perfeito para suas necessidades:

A maneira mais fácil de compartilhar e gerenciar seus repositórios Git, Mercurial e Subversion por http.

  • Instalação muito fácil
  • Não há necessidade de hackear arquivos de configuração, o SCM-Manager é completamente configurável a partir de sua interface da Web
  • Não é necessário Apache nem instalação de banco de dados
  • Gerenciamento central de usuários, grupos e permissões
  • Suporte pronto para uso para Git, Mercurial e Subversion
  • API de serviço da Web RESTFul completa (JSON e XML)
  • Interface de usuário rica
  • API de plug-in simples
  • Plug-ins úteis disponíveis (por exemplo, autenticação Ldap, ActiveDirectory, PAM)
alexandrul
fonte
0

O RhodeCode é um navegador de repositório de código aberto / ferramenta de gerenciamento com um servidor push / pull integrado, LDAP / AD, sistema de permissões e pesquisa de texto completo.

Você pode vê-lo ao vivo aqui: http://demo.rhodecode.org/

alexandrul
fonte