web-dev-qa-db-fra.com

Comment git gère-t-il l'autorisation de dossier?

J'utilise git version 1.5.6.3, et il semble que git ne remarque pas les changements de mode d'un dossier

#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'est-ce que 04000 représenter?

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

Est-ce un comportement normal?

Comment suivre les modifications du mode dossier?

45
hdorio

Le seul bit "permissions" suivi par git est le bit exécutable pour les fichiers, les autres bits de mode décrivent le type d'objet du système de fichiers que représente l'objet dans chaque arbre git. git prend en charge les fichiers et les liens symboliques (blobs), les répertoires (arborescences) et les sous-modules (commits).

git est conçu pour aider à suivre le code source sur différentes machines. Les bits d'autorisation dépendent des mappages d'utilisateurs et de groupes entre les machines. Dans les environnements distribués où ces mappages n'existent pas, le suivi des bits d'autorisation finit généralement par entraver les choses plutôt que d'aider quoi que ce soit.

Si vous avez besoin de suivre plus d'attributs du système de fichiers que ce que git suit de manière native, vous pouvez envisager un outil d'extension tel que etckeeper .

70
CB Bailey