Как git разрешает доступ к папке?

Я использую git версию 1.5.6.3, и кажется, что git не замечает изменения режима папки

#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)

Что означает 04000?

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

Это нормальное поведение?

Как я могу отслеживать изменения режима папки?

Ответ 1

Единственный бит "разрешений", который git отслеживает, является исполняемым битом для файлов, остальные биты режима описывают, какой тип объекта файловой системы является объектом в каждом дереве git. git поддерживает файлы и символические ссылки (blobs), каталоги (деревья) и подмодули (коммиты).

git предназначен для отслеживания исходного кода на разных машинах. Разрешающие биты зависят от пользовательских и групповых сопоставлений между машинами. В распределенных средах, где эти сопоставления не существуют, биты разрешений на отслеживание обычно заканчиваются тем, что препятствуют вещам, а не помогают чему-либо.

Если вам нужно отслеживать дополнительные атрибуты файловой системы, что git отслеживает изначально, вы можете рассмотреть и использовать инструмент расширения, например etckeeper.