2011-01-07 17 views
12

Estoy buscando una manera de alojar repositorios git privados en mi propio servidor.
Estoy usando Github para proyectos de código abierto míos, pero preferiría usar mi propio servidor para almacenar repositorios git privados.¿Puedo alojar repositorios privados de Git en mi propio servidor?

¿Puede alguien sugerirme qué script debo usar para este propósito?
Trac no es lo que estoy buscando, sin embargo. Quiero algo que sea, preferiblemente una solución basada en PHP (solo opcional) y esp. algo que tiene una interfaz de usuario más fácil.

Cualquier ayuda es apreciada aquí.

+3

¿No sería esta la mejor opción para serverfault? – marcgg

Respuesta

10

Bueno, para no gitosis/configuración gitorious tiene dos opciones: en realidad

  1. dar a la gente las cuentas de Linux con conchas completos (contraseñas y/o claves SSH) para tener acceso al repositorio git.
  2. Ofrezca a las personas acceso a una cuenta de Linux a través de su clave ssh en /home/ac/.ssh/authorized_keys2 cuyo shell está configurado en /usr/bin/git-shell. Esto significa que no podrán iniciar sesión como usuarios de Linux con un intérprete de comandos, por lo que hacen todo lo que no sea usar git en su equipo.

En ambos casos, el usuario en cuestión necesita (leer | escribir | ambos) acceso al repositorio de git, de acuerdo con sus necesidades, ya sea como usuario o como parte de un grupo.

Podría tener sentido tener un directorio/git/proyecto y luego tener repositorios de usuarios allí, ya que tener varias personas presionando al mismo repositorio generalmente es una mala idea (las personas lo rompen demasiado fácilmente en mi experiencia) . Por ejemplo, puede tener /srv/git/proj/proj-ninefingers.git y tener un repositorio de "liberación" de "/ srv/git/proj/project.git". Eso es probablemente lo que haría si ejecutara un esfuerzo de equipo.Permisos, proyectiles, etc. que se establecerán según corresponda.

Tenga en cuenta que si desea permitir exportaciones mediante el protocolo git de solo lectura, debe asegurarse de que el usuario git configurado tenga acceso de lectura y que git-daemon-export-ok exista en su repositorio. git update-server-info también debe ejecutarse antes de gitweb recogerá el repositorio, en caso de que desee utilizar eso.

Como han dicho otros, git gc optimiza el repositorio y es una buena idea hacerlo regularmente. ¿Trabajo de Cron?

Finalmente, existe una plétora de marcos para simplificar esto (gitosis, gitorious, ...). No creo que sea más fácil que proporcionar acceso a una carpeta a través de varios mecanismos, pero ese soy yo.

Como ejemplo de mi configuración, que sea sólo yo, que tengo:

$ cat /etc/passwd | grep git 
git:x:1002:1002:Antony Vennard,,,:/home/git:/usr/bin/git-shell 
gitdaemon:x:112:65534::/nonexistent:/bin/false 
$ cat /etc/group | grep git 
git:x:1002: 
$ ls -l /srv/git 
drwxr-xr-x 7 git git 4096 2010-09-12 23:31 bsdnt.git 
drwxr-xr-x 7 git git 4096 2010-06-16 22:32 vforth.git 
$ cat /home/git/.ssh/authorized_keys2 
ssh-rsa somehex user1 
ssh-rsa somehex user2 

Esto significa que cualquier persona con la clave privada usuario1 puede conectarse y comprometerse a cualquiera de esos repositorios.

1

Gitorious se basa en su propia base de código. En this page puede encontrar el git-repo. del proyecto.

Gitalist es muy fácil de usar git Webinterface.

0

Si solo desea el repositorio de código y no páginas web, simplemente coloque el directorio ".git" en algún lugar accesible, que sea suficiente para clonar a través de HTTP (tenga en cuenta que necesitará ssh o similar para enviar a ese repositorio).

Por ejemplo, un proyecto mío está alojado de esta manera en http://psi5.com/~geier/mutextrace.git.

Es una buena idea ejecutar periódicamente "git gc" en ese repositorio para agrupar objetos, de modo que los clientes no tengan que hacer miles de accesos.

Si quieres páginas web, entonces gitorious es de hecho el camino a seguir.

Cuestiones relacionadas