2009-07-01 19 views
41

estoy usando git versión 1.5.6.3, y parece git no se da cuenta el modo de una carpeta cambia¿Cómo maneja git el permiso de carpeta?

#create a test repository with a folder with 777 mode 
:~$ mkdir -p test/folder 
:~$ touch test/folder/dummy.txt 
:~$ cd test 
:~/test$ chmod 777 folder/ 

#init git repository 
:~/test$ git init 
Initialized empty Git repository in ~/test/.git/ 
:~/test$ git add . 
:~/test$ git commit -m 'commit a directory' 
Created initial commit 9b6b21a: commit a directory 
0 files changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 folder/dummy.txt 

#change folder permission to 744 
:~/test$ chmod 744 folder/ 
:~/test$ git status 
# On branch master 
nothing to commit (working directory clean) 

¿Qué significa para 04000?

:~/test$ git ls-tree HEAD folder 
040000 tree 726c1d5f0155771348ea2daee6239791f1cd7731 folder 

¿Es este comportamiento normal?

¿Cómo puedo rastrear los cambios en el modo de carpeta?

+3

Relacionados: http://stackoverflow.com/questions/737673/how-to-read-the-mode-field-of-git-ls-trees-output –

Respuesta

62

El único bit de 'permisos' que git rastrea es el bit ejecutable de los archivos, el resto de los bits de modo describen qué tipo de objeto de sistema de archivos es el objeto en cada árbol git. git admite archivos y enlaces simbólicos (blobs), directorios (árboles) y los submódulos (commits).

git está diseñado para ayudar a rastrear el código fuente en diferentes máquinas. Los bits de permiso dependen de las asignaciones de usuarios y grupos entre las máquinas. En entornos distribuidos donde estas asignaciones no existen, el seguimiento de bits de permisos generalmente termina obstaculizando las cosas en lugar de ayudar a nada.

Si necesita rastrear más atributos del sistema de archivos que lo que git rastrea de forma nativa podría considerar y herramienta de extensión como etckeeper.

Cuestiones relacionadas