remota rama origin example comandos cambiar git permissions gitolite

rama - ¿Cómo saber qué causa los permisos de archivos para cambiar al verificar archivos con git?



git pull origin master (2)

Después de enviar archivos a nuestro servidor, se ejecuta el siguiente enlace posterior a la recepción:

#!/bin/sh export GIT_WORK_TREE=/home/user/www/ git checkout -f

Sin embargo, los archivos obtienen 600 permisos muy extraños y las carpetas 700 al finalizar la compra. Esto no es lo que espero (en nuestros otros servidores obtenemos 644 y 755 ). De este hilo entiendo que git no establece permisos, por lo que no se puede culpar a git. Mi pregunta es: ¿qué es? ¿Cómo puedo averiguar cuál es la causa de este problema?

Ya lo resolví temporalmente ejecutando un script adicional al momento de pagar para corregir los permisos, pero estoy interesado en resolver la causa raíz.

Estoy usando gitolita para administrar los repositorios, pero dudo que esa sea la causa. Pero, nuevamente, estoy feliz de saber dónde puedo comenzar, porque en este momento no estoy seguro de cómo investigar esto.

De acuerdo con las respuestas iniciales, he examinado la configuración de umask en el servidor. El usuario de git (que el usuario usó para cargar los archivos), la configuración umask es 0002. Esto se confirma en el siguiente ejercicio:

git@server:~$ umask 0002 git@server:~$ touch newfile git@server:~$ ls -la newfile -rw-rw-r-- 1 git git 0 Aug 5 10:46 newfile

Detalles adicionales:

  • Linux utilizado tanto desde el lado del servidor como desde el lado del desarrollo
  • En el repositorio local, los permisos son 755 y 644
  • filemode se establece en true en .git / config

Sin embargo, los archivos obtienen 600 permisos muy extraños y las carpetas 700 al finalizar la compra.

Parece que tu shell tiene una configuración de umask restrictiva, posiblemente umask 0177 .

De este hilo entiendo que git no establece permisos, por lo que no se puede culpar a git.

No, es el ajuste umask de tu caparazón.

Mi pregunta es: [...] [¿cómo] puedo descubrir cuál es la causa de este problema?

Ejecute umask , le dirá cuál es su configuración actual. Es como ser 0177 o similar. Si desea saber por qué , debe consultar los archivos .rc utilizados por /bin/sh , probablemente .profile o .bashrc , y otros archivos de fuentes.

Puede tener configuraciones de umask muy restrictivas, pero anularlas en su secuencia de comandos, agregando una línea umask como se sugirió @VonC.


Como en " Git change default umask when update file ", ¿puedes agregar umask a tu gancho?

#!/bin/sh umask 002 export GIT_WORK_TREE=/home/user/www/ git checkout -f

Eso debería establecer los permisos de archivo en 664 y los permisos de directorio en 775.

Con respecto a la gitolita específicamente, consulte la sección umask del archivo gitolite.rc :

$UMASK , octal, predeterminado 0077

El UMASK predeterminado que utiliza gitolite otorga permisos rwx------ a todos los repos y sus contenidos.
Las personas que quieren ejecutar gitweb (o cgit, redmine, etc.) se dan cuenta de que esto no funcionará.

La forma correcta de lidiar con esto es darle a esta variable un valor como 0027 (observe la sintaxis: se requiere el 0 inicial), y luego haga que el usuario ejecute el servidor web (apache, www-data, lo que sea) como miembro de '' git ''grupo.

Si ya ha instalado gitolite, los archivos existentes deberán repararse manualmente (para una umask o 0027 , sería chmod -R g+rX ). Esto se debe a que umask solo afecta los permisos en los archivos recién creados, no en los existentes.