$ git ls-tree fb3a8bdd0ce
100644 blob 63c918c667fa005ff12ad89437f2fdc80926e21c .gitignore
100644 blob 5529b198e8d14decbe4ad99db3f7fb632de0439d .mailmap
100644 blob 6ff87c4664981e4397625791c8ea3bbb5f2279a3 COPYING
040000 tree 2fb783e477100ce076f6bf57e4a6f026013dc745 Documentation
100755 blob 3c0032cec592a765692234f1cba47dfdcc3a9200 GIT-VERSION-GEN
100644 blob 289b046a443c0647624607d471289b2c7dcd470b INSTALL
100644 blob 4eb463797adc693dc168b926b6932ff53f17d0b1 Makefile
100644 blob 548142c327a6790ff8821d67c2ee1eff7a656b52 README
...
Wiem, że ostatnie 3 cyfry oktaw to tryb pliku, ale do czego służą pierwsze 3 cyfry? Nie mogę tego znaleźć w instrukcji obsługi gita.
chmod 0100755 <file>
aby zadowolić Git. Lub jeszcze bardziej zabawne, git chmod <perm> <file> `z powodu trybów plików Gita (nie istnieje) ... Zobacz także pytania takie jak Jak usunąć pliki z napisem„ stary tryb 100755 nowy tryb 100644 ”ze zmian niestopowanych w Git? , Jak odzyskać uprawnienia do pliku, do jakiego git „myśli” powinien być plik? . To narzędzie to taki zepsuty żart ...Odpowiedzi:
6 cyfr przedstawia tryb pliku przy użyciu klasycznej notacji UNIX. Pierwsze dwie cyfry pokazują typ pliku, trzecia to set-uid / set-gid / sticky bits, a ostatnie trzy znasz.
Oto jak
man 2 stat
dokumentuje to w moim systemie GNU / Linux:źródło
0
w górnych wierszach (np.0170000
Zamiast170000
), skoro dotyczy0
wszystkich wierszy, dlaczego by go po prostu nie pominąć?0
to klasyczna konwencja oznaczania liczb ósemkowych.Z
index-format.txt
pliku Git , odnośnie trybu:Ponadto typ obiektu katalogu (binarny 0100) i zwykły plik z możliwością zapisu przez grupę (uprawnienia 0664) są dozwolone, zgodnie z metodą. Zwykły, niewykonywalny plik z możliwością zapisu w grupie to niestandardowy tryb, który był obsługiwany we wcześniejszych wersjach Git.
fsck.c
fsck_tree
To sprawia, że prawidłowe tryby (jako binarne i ósemkowe):
0100000000000000
(040000
): Katalog1000000110100100
(100644
): Zwykły plik niewykonywalny1000000110110100
(100664
): Zwykły, niewykonywalny plik z możliwością zapisu przez grupę1000000111101101
(100755
): Zwykły plik wykonywalny1010000000000000
(120000
): Dowiązanie symboliczne1110000000000000
(160000
): Gitlinkźródło
644
plików w git, a komunikat o zatwierdzeniu powiedział, że zostały utworzone w repozytorium jako664
040000
trybu directory ( ) do reprezentowania katalogów. Zobacz linkowanyfsck.c
kod lub po prostu wykonajgit ls-tree HEAD
w repozytorium Git, które zawiera katalogi.fsck
kod nie będzie twierdził, że wpis drzewa w tym trybie jest zły . Pomysł polegał na pozostawieniu miejsca na uprawnienia grupowe do plików, jeśli okaże się to potrzebne. Nigdy nie był potrzebny, dlatego nigdy nie został dodany, ale kod testowy nigdy nie został zmieniony, aby tego zabronić.