2009-07-01 18 views
41

Używam git wersji 1.5.6.3, i wydaje się, git nie zauważy tryb A folderu zmieniaW jaki sposób git obsługuje uprawnienia do folderów?

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

Co 04000 oznaczają?

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

Czy to normalne zachowanie?

Jak mogę śledzić zmiany trybu folderów?

+3

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

Odpowiedz

62

Jedynym bitem "uprawnień", który utwory git jest bitem wykonywalnym dla plików, pozostałe bity trybów opisują, jaki typ obiektu systemu plików znajduje się obiekt w każdym drzewie git. git obsługuje pliki i dowiązania symboliczne (bloby), katalogi (drzewa) i submoduły (zatwierdzenia).

git służy do śledzenia kodu źródłowego na różnych komputerach. Bity uprawnień zależą od mapowań użytkowników i grup między maszynami. W środowiskach rozproszonych, w których te odwzorowania nie istnieją, śledzenie bitów uprawnień zazwyczaj kończy się utrudnianiem, a nie udzielaniem pomocy.

Jeśli chcesz śledzić więcej atrybutów systemu plików, to co git śledzi natywnie, możesz rozważyć i rozszerzyć narzędzie, takie jak etckeeper.