2009-07-01 16 views
41

Sto usando git versione 1.5.6.3, e sembra git non si accorge modalità di una cartella cambiaIn che modo git gestisce l'autorizzazione per le cartelle?

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

Cosa significa 04000 stand for?

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

È normale?

Come posso tenere traccia delle modifiche alla modalità cartella?

+3

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

risposta

62

L'unico bit 'permessi' che le tracce git sono il bit eseguibile per i file, il resto dei bit di modalità descrivono quale tipo di oggetto file system l'oggetto in ogni albero git è. git supporta file e symlink (BLOB), directory (alberi) e sottomoduli (commit).

git è progettato per tracciare il codice sorgente su macchine diverse. I bit di autorizzazione dipendono dal mapping di utenti e gruppi tra macchine. Negli ambienti distribuiti in cui queste mappature non esistono, i bit di tracciamento dei permessi di solito finiscono per ostacolare le cose piuttosto che aiutare qualcosa.

Se è necessario tenere traccia di più attributi del file system, è possibile prendere in considerazione le tracce git in modo nativo e lo strumento di estensione come etckeeper.