Hospedaje de múltiples repositorios (svn, hg, git)

8

Recientemente adquirí un servidor dedicado y necesito mover varios repositorios desde un servicio de alojamiento de control de código fuente. Sin tener mucha experiencia en la administración del servidor, sin embargo, no tengo idea de cómo organizarlo de manera efectiva. Lo que busco

  1. svn.host.com, hg.host.com, subdominios git.host.com que serán las raíces de los diferentes repositorios, a través de claves SSH
  2. fácil creación de nuevos repositorios
  3. autenticación usando la lista de usuarios de Unix del servidor, pero con permisos por proyecto, también acceso público opcional de solo lectura para algunos de los repositorios

Desafortunadamente, cualquier término de búsqueda que pruebo en Google me dirige a soluciones comerciales alojadas, y no a guías sobre cómo desarrollar las mías. Necesito algo como una solución alojada simplificada pero sin la necesidad de que los usuarios puedan crear sus propios repositorios.

¿Alguna sugerencia, tutoriales o soluciones escritas sobre dónde comenzar la investigación? Una solución de código abierto para una interfaz administrativa para manejar eso (o al menos para algunos sería perfecto ...

Kornel Kisielewicz
fuente

Respuestas:

6

Solo uso Git, así que intentaré al menos ayudarte con eso:

Si no ve ningún problema para administrar sus repositorios a través de la línea de comando, la gitosis debería funcionar bastante bien.

Si realmente necesita una interfaz web, puede consultar repo.or.cz ( http://repo.or.cz/w/girocco.git ) o gitorious ( http://gitorious.org/gitorious ) . Repo.or.cz es más feo, pero es mucho más fácil de instalar (gitorious es de código abierto, pero también es el software que alimenta gitorious.org: no tienen muchos incentivos para escribir buenas instrucciones)

Aquí hay una lista más completa de opciones: https://git.wiki.kernel.org/index.php/GitHosting

Cualquiera de esas opciones le permitirá crear fácilmente nuevos repositorios.

Ahora, una advertencia: nunca, NUNCA, use la lista de usuarios del servidor Unix para los permisos del repositorio. Es bastante fácil meterse con él, y los resultados son fácilmente catastróficos (la gitosis utiliza una configuración de archivo simple y teclas ssh. Debería hacer el truco por usted).

Otra cosa, no veo por qué necesita tener repositorios de subversión, HG y Git. La mayoría de los proyectos usan solo una de esas opciones. ¿Cuidar de explicar por qué?

Tiago Fassoni
fuente
Tengo varios proyectos, celebrados en varios repositorios. Muchos comisionados no son especialmente expertos en tecnología y, por lo tanto, hg y git serían un problema para ellos, por lo que mantengo svn para los proyectos más abiertos. Personalmente uso HG como mi SCM de elección. También organizo un par de proyectos para mis amigos y algunos de ellos usan git como su SCM de elección. No hay forma de complacer a todos como parece :)
Kornel Kisielewicz
1
Además, ¿podría elaborar más sobre los peligros del uso de la lista de usuarios de Unix para los permisos de repositorio?
Kornel Kisielewicz
3
Por qué usar la lista de usuarios de Unix para repositorios es una mala cosa: pérdida de granularidad, pérdida de portabilidad. Si necesita cambiar los repositorios a otro servidor, deberá mover toda la lista de usuarios de Unix. Si desea delegar permisos de administrador, debe otorgar permisos de root. Ahora, en gitosis, si desea cambiar el servidor, solo tiene que clonar el repositorio. Si desea delegar permisos de administrador, solo tiene que agregar al usuario al grupo gitosis-admin.
Tiago Fassoni
just_testing, acordado, puntos válidos :)
Kornel Kisielewicz
2

SVN se puede hacer con Apache WebDAV, en un servidor virtual, utilizando autenticación Unix y las propias ACL de nivel de usuario de Subversion. No sé nada sobre mercurial o git, pero espero que también puedan conectarse a DAV.

draeath
fuente
1

Cuando desea utilizar SSH , básicamente tiene que restringir las claves editando el authorized_keysarchivo en el servidor. Para Mercurial, las principales formas de hacer esto son:

  • Puede usar el contrib/hg-sshscript para restringir los comandos que las personas pueden ejecutar cuando inician sesión con SSH. El archivo contiene un encabezado para explicar cómo usarlo, pero básicamente agrega

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

    delante de la clave en el authorized_keysarchivo. Eso restringe la clave para que solo se pueda usar para empujar y tirar al repositorio indicado.

  • También puede usar la herramienta de servidor mercurial de terceros si desea algo como gitois . Esto le permite administrar usuarios y sus derechos de acceso editando archivos en un repositorio de administración especial.

Consulte el wiki de Mercurial para conocer otras herramientas similares para SSH.

Para HTTP , hay

  • El hgwebscript CGI o WSGI incorporado (rápido) que viene con Mercurial. Eso maneja los empujones y los tirones, pero no permite la creación de nuevos repositorios; inicie sesión en el servidor para eso.

  • El proyecto de terceros RhodeCode . Esto le proporciona un front-end web similar a Bitbucket para Mercurial donde puede configurar usuarios y sus derechos de acceso. Es compatible con la autenticación LDAP, por lo que puede conectarla a su base de datos de usuarios de Unix existente.

Consulte la página de repositorios de publicación para obtener más información.

Martin Geisler
fuente
1

SCM-Manager puede ser perfecto para sus necesidades:

La forma más fácil de compartir y administrar sus repositorios Git, Mercurial y Subversion a través de http.

  • Instalación muy fácil
  • No es necesario hackear archivos de configuración, SCM-Manager es completamente configurable desde su interfaz web
  • No se requiere Apache ni instalación de base de datos
  • Administración central de usuarios, grupos y permisos
  • Soporte inmediato para Git, Mercurial y Subversion
  • API de servicio web RESTFul completa (JSON y XML)
  • Interfaz de usuario enriquecida
  • API de complemento simple
  • Complementos útiles disponibles (por ejemplo, autenticación Ldap, ActiveDirectory, PAM)
alexandrul
fuente
0

RhodeCode es una herramienta de gestión / navegador de repositorio de código abierto con un servidor push / pull incorporado, LDAP / AD, sistema de permisos y búsqueda de texto completo.

Puedes verlo en vivo aquí: http://demo.rhodecode.org/

alexandrul
fuente