tipos tag remove qué existen etiquetas crear git

tag - qué tipos de etiquetas existen en git



Git cambia los permisos de mi archivo al finalizar la compra (6)

Nuestro flujo de trabajo se desarrolla en una máquina local, confirma los cambios en un repositorio central y luego revisa la rama de ese repositorio que necesitamos.

El problema es que Git cambia la propiedad e incluso los permisos de archivo de los archivos que verifica, dependiendo del usuario que realiza el pago. Un resultado directo de esto es que nuestros archivos CSS se vuelven ilegibles después de un pago, ya que Git cambia la propiedad del archivo a la persona que hizo el retiro de Git en la raíz web.

Ejemplo:

  • Antes de git pull : style.css propiedad de user_a:group_a
  • Después de git pull : style.css propiedad de user_b:user_b

Deseo mantener la propiedad como user_a:group_a . No quiero tener que iniciar sesión cada vez que un miembro de mi equipo haya realizado cambios en los archivos y cambie la propiedad a la configuración original.

¿Cómo lidian otras personas con esto? ¿Cómo se manejan los repositorios utilizados por múltiples usuarios? Tenemos suphp en nuestro sistema y no podemos quitárselo.


A menudo corro un

git checkout -f file.xml

... en un archivo version.xml con permisos de escritura mundial, ya que lo modifico continuamente y quiero devolverlo al estado normal.

Pero eso restablece los permisos. Una versión un poco más larga:

git show HEAD:./file.xml > ./file.xml

Simplemente restablece el contenido.



Git no cambia los permisos ni la propiedad del archivo. Es solo que (sobre todo) tampoco lo almacena, no existe en su repositorio, por lo tanto se cambian a lo que tenga su usuario. Al igual que con cualquier creación de archivo.

Git admite dos conjuntos de permisos: bit ejecutable activado y bit ejecutable desactivado. Nada más. La información de propiedad no se almacena en absoluto.

Ver este hilo : "Si quieres permisos específicos, tendrás que hacerlo manualmente".

Se sugieren algunas soluciones: puede usar una herramienta separada para hacerlo por usted, usar una combinación adecuada de cuenta de usuario y umask para configurarlas de manera predeterminada o escribir un git hook para hacerlo. Se debería instalar un gancho en el usuario que realiza el pago.

Al igual que @ikke, dijo en los comentarios, Git no es realmente una herramienta de despliegue y no debería usarse como tal. Es un sistema de control de versiones para el código fuente.


La solución más sencilla es ejecutar git como user_a .


Para mí, la mejor solución fue la creación de un script de shell que corrige los permisos. Por ejemplo:

.git/hooks/post-checkout: #!/bin/sh chmod +x tools/*

Por cierto, el pago y envío no es el único caso cuando git se mete con los permisos, sino también cuando lo haces. Manejo eso con el gancho .git/hooks/post-merge .

Idealmente, puede crear un script de shell que corrige permisos en algún lugar de su repositorio (por ejemplo, tools/fixpermissions.sh ) y llamarlo en ambos enganches. No olvides cambiar los permisos para ese archivo manualmente;)

#!/bin/sh chmod a+x tools/fixpermissions.sh tools/fixpermissions.sh


Una posible solución a su problema podría estar aquí: conservar los permisos de archivos con Git

Me funcionó, así que puedes probar y ver cómo funciona para ti.