repositorio eliminar crear configurar comandos git permissions share shared

eliminar - git pull-p



Cómo configurar un repositorio git existente para ser compartido por un grupo UNIX (5)

Además de las respuestas anteriores de permitirle a un grupo leer / escribir, también necesita agregar al usuario al grupo (digamos "foo").

sudo usermod -a -G [groupname] [username]

Nota: primero tendrá que crear un usuario si no existe

Tengo un repositorio git (uno) que hasta ahora solo he podido escribir. Quiero abrirlo a algún grupo de usuarios de UNIX, foo, para que todos los miembros de foo puedan presionarlo. Soy consciente de que puedo configurar fácilmente un nuevo repositorio git con:

git init --bare --shared=group repodir chgrp -R foo repodir

Pero necesito la operación equivalente para un directorio de repos existente .


En el directorio de repos, ejecuta los siguientes comandos:

git config core.sharedRepository group chgrp -R foo repodir chmod -R g+w repodir

Editar: Para abordar la confusión frecuente, el group es una palabra clave real, no se supone que debes reemplazar esto con el nombre del grupo.


Esto probablemente no sea necesario, pero vale la pena señalar que git init --bare --shared también establece la opción denyNonFastForwards .

git config receive.denyNonFastForwards true

El significado de esta opción es el siguiente:

receive.denyNonFastForwards

Si rebase confirma que ya presionó y luego intenta volver a presionar, o de lo contrario intenta enviar una confirmación a una rama remota que no contenga la confirmación que señala actualmente la sucursal remota, se le denegará. Esta es generalmente una buena política; pero en el caso de la rebase, puedes determinar que sabes lo que estás haciendo y puedes forzar la actualización de la rama remota con un indicador -f a tu comando push.

(desde http://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration )


Fusionando @David Underhill y @kixorz respuestas, hice mi propia solución (definitiva).

Es para repos sin formato y repos sin formato. Solo hay pequeñas diferencias entre ellos, pero de esta manera es más claro.

DESPACHO DESCUBIERTO

cd <repo.git>/ # Enter inside the git repo git config core.sharedRepository group # Update the git''s config chgrp -R <group-name> . # Change files and directories'' group chmod -R g+w . # Change permissions chmod g-w objects/pack/* # Git pack files should be immutable find -type d -exec chmod g+s {} + # New files get directory''s group id

dónde:

  • <repo.git> es el directorio del repositorio desnudo, normalmente en el servidor (p my_project.git/ ej. my_project.git/ ).
  • <group-name> es el nombre del grupo para usuarios de git (por ejemplo, usuarios ).

REPOSITORIO NO DESCALCIFICADO

cd <project_dir>/ # Enter inside the project directory git config core.sharedRepository group # Update the git''s config chgrp -R <group-name> . # Change files and directories'' group chmod -R g+w . # Change permissions chmod g-w .git/objects/pack/* # Git pack files should be immutable find -type d -exec chmod g+s {} + # New files get directory''s group id

dónde:

  • <project_dir> es el directorio del proyecto que contiene la carpeta .git .
  • <group-name> es el nombre del grupo para usuarios de git (por ejemplo, usuarios ).

Intente hacer un repositorio existente en el trabajo de repodir para usuarios en grupo foo :

chgrp -R foo repodir # set the group chmod -R g+rw repodir # allow the group to read/write chmod g+s `find repodir -type d` # new files get group id of directory git init --bare --shared=all repodir # sets some important variables in repodir/config ("core.sharedRepository=2" and "receive.denyNonFastforwards=true")