2012-01-16 11 views
28

Así que esto es como puedo configurar mi proyecto:Git, ¿Cómo cambiar un repositorio descubierto a compartido?

git init --bare 

Más tarde supe que si quieres trabajar en un proyecto con múltiples usuarios así es como debería haber hecho:

git init --bare --shared 

Ahora traté de trabajar así y afortunadamente estamos en el comienzo así que pude configurar git nuevamente. Todavía me pregunto, sin embargo, cuando estás en medio de un proyecto no puedes hacer eso. ¿Hay alguna manera de poder cambiar un repositorio simple por uno compartido?

+0

Otro uso El caso en el que uno quisiera modificar un repositorio simple existente es si su repositorio remoto se corrompió y usted está tratando de reemplazarlo con un repositorio simple que haya realizado ingeniería inversa de un repositorio regular. –

+1

Ya en 'git 1.7.1' puedes simplemente ejecutar el comando' git init --bare --shared' en * saliendo de * repo al descubierto y 'git' * reinicializar * el repositorio con el uso compartido especificado. – go2null

+0

Posible duplicado de [Cómo configurar un repositorio git existente para que lo comparta un grupo UNIX] (http://stackoverflow.com/questions/3242282/how-to-configure-an-existing-git-repo-to-be -shared-by-a-unix-group) –

Respuesta

34

Dado que la opción --shared simplemente establece los permisos sobre todo en el repositorio de grupo con permisos de escritura usted puede hacer esto manualmente más tarde:

$ chmod -R g+w the/repo/path 

Plus, añadir

sharedrepository = 1 

en la sección [core] en .git/config. repositorios compartidos también tienen la siguiente receive option definido por defecto (que puede o no quiere):

[receive] 
    denyNonFastforwards = true 

Nota: Con el fin de decidir si desea denyNonFastforwards: Esta opción significa una combinación nunca sucede en el depósito compartido, lo cual, a su vez, significa que nunca hay un conflicto de fusión en el repositorio compartido. En su lugar, se rechaza la inserción forzando al usuario a realizar la fusión en su repositorio local, donde es mucho más fácil de arreglar y donde no interfiere con el uso que otros hacen del repositorio compartido.

+0

Aha ok! Es bueno saberlo, desearía haber preguntado esto antes. ¡Gracias! – bottleboot

+1

Ok, ya veo! Acabo de leer la respuesta @ jørgensen que confirma eso. Stackoverflow debe tener un botón de respuesta combinada: D! ¡Muchas gracias a todos ustedes que fue muy esclarecedor! – bottleboot

+0

No funcionó para mí. Se requiere 'chmod -R g + s ...'. Un nuevo 'git init --bare --shared' tendrá los derechos de grupo" rws ". (Ubuntu 12.04) – Unapiedra

5

Además chmod -R g + w, también es necesario para editar (.git/)config y establecer core.sharedRepository = .... Para ..., hay un puñado de valores, descritos en git-init (1).

+0

Ok! Eso parece completar mi sospecha de que también necesitaba cambiar la configuración. ¡Gracias! – bottleboot

4

Probablemente si intenta compartir un repositorio existente, es posible que tenga muchos usuarios diferentes confirmados.

1.Si tiene un permiso de superusuario, puede avanzar y cambiar todos los permisos mediante el paso dos; en cualquier otro caso, deberá solicitar a todos los usuarios objetos creados con sus usuarios, utilice los siguientes comando para saber quiénes son:

$ ls -la | awk '{print $3}' | sort -u 
<your user_name> 
<his user_name> 

2.Now usted y los usuarios de todos los propietarios de archivos tendrá que cambiar los archivos de permiso, haciendo:

$ chmod -R 774 . 

3.Después de que usted tendrá que añadir una nueva propiedad que es equivalente a --shared = grupo hecho para el nuevo repositorio, según la documentación, esto hace que el repositorio grupo con permisos de escritura, hacerlo ejecutando:

$ git config core.sharedRepository group 
Cuestiones relacionadas