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 (pmy_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")