Eu executei um git commit
comando e ele me deu a seguinte resposta:
7 files changed, 93 insertions(+), 15 deletions(-)
mode change 100644 => 100755 assets/internal/fonts/icomoon.svg
mode change 100644 => 100755 assets/internal/fonts/icomoon.ttf
mode change 100644 => 100755 assets/internal/fonts/icomoon.woff
Eu sei que os arquivos podem ter permissões de usuário / grupo / outras rwx e essas podem ser expressas como três bytes, como "644" ou "755". Mas por que o git está mostrando seis bytes aqui?
Li os seguintes artigos mas não encontrei resposta:
Os valores mostrados são os modos de arquivo de 16 bits armazenados pelo Git , seguindo o layout dos tipos e modos POSIX :
Esse arquivo não menciona diretórios; eles são representados usando o tipo de objeto 0100.
Cada dígito no valor de seis dígitos está em octal, representando três bits; 16 bits, portanto, precisam de seis dígitos, o primeiro dos quais representa apenas um bit:
Git não armazena modos arbitrários, apenas um subconjunto dos valores são permitidos, dos tipos e modos POSIX usuais (em octal, 12 para um link simbólico, 10 para um arquivo regular, 04 para um diretório) ao qual o git adiciona 16 para links do Git. O modo é anexado, usando quatro dígitos octais. Para arquivos, você verá apenas 100755 ou 100644 (embora 100664 também seja tecnicamente possível); diretórios são 040000 (permissões são ignoradas), links simbólicos 120000. O set-user-ID, set-group-ID e sticky bits não são suportados (eles seriam armazenados nos bits não utilizados).
Veja também esta resposta relacionada .
Tradicionalmente, os sistemas de arquivos Unix usavam 16 bits para manter o tipo em 4 bits (por exemplo, arquivo regular, diretório, dispositivo especial de caractere...) 9 bits de usuário/grupo/outras permissões, o bit fixo, o bit SUID e o bit SGID .
Você está vendo isso em octal, então os 5 dígitos mais à direita podem ter os valores 0 - 7 (representando 3 bits para um total de 15) e o dígito à esquerda é 0 ou 1 para o último bit.
Em um sistema Linux
man -s 7 inode
(ou seja, inode(7) ) deve informar sobre isso na seção tipo de arquivo e modo.