it-swarm-pt.tech

O que significa 'git commit' quando diz 'modo de criação ...' no stdout?

EDITAR:

Veja git-store-meta de Danny Lin como uma solução proposta para o problema de versionamento-metadados descrito abaixo. Ainda estou para testá-lo a partir de 13/05/2015.

PERGUNTA ORIGINAL:

Faça o create|delete mode ... linhas no git commit output (exemplo abaixo) representa algum tipo de controle de metadados? (E/ou, o que essas linhas representam em geral?) Elas parecem ser códigos/representações de permissão de arquivo do tipo unix, embora eu não tenha certeza - exatamente - do mapeamento, mas a grande questão é: e se alguma coisa acontecer git faz com esses códigos/configurações/valores? O git tenta alavancar esses códigos salvos de alguma forma para ser útil para resolver problemas de metadados? Minha pergunta sobre o superuser.com ["Como reutilizar/estender o mecanismo de metadados do etckeeper para controle git de sistemas de arquivos não/etc, ou estender o git nativamente com a referida capacidade ? "] ( https://superuser.com/questions/367729/how-to-reuse-extend- etckeepers-metadata-engine-for-git-control-of- arquivo não-etc)? Estou ciente de que o git não controla todos os metadados do sistema de arquivos.

Aparentemente, o Git já controla o "atributo/permissão executável" de um arquivo (aparentemente portátil para a maioria dos sistemas operacionais) e algumas outras coisas, como links de sistema de arquivos. Estou procurando um mecanismo de controle mais específico do Unix/Linux/BSD/DarwinMacOSX para mais/todos os metadados, ou seja, todas as permissões e propriedade de usuário/grupo. ACLs e outros controles de metadados são opcionais. Tentando ver se o material que o git é atualmente armazenado pode ser útil para resolver esse problema.]

[email protected] Dec 15 09:40:45 ~/.../sandbox-1# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   README
#   new file:   dummy-file-will-be-removed
#   deleted:    ownerfile
#
[email protected] Dec 15 09:40:45 ~/.../sandbox-1# git commit -m "testing git"
[master c5b0201] testing git
 2 files changed, 1 insertions(+), 2 deletions(-)
 create mode 100644 dummy-file-will-be-removed
 delete mode 100644 ownerfile
[email protected] Dec 15 09:41:55 ~/.../sandbox-1# 
[...]
[email protected] Dec 15 11:33:11 ~# git --version
git version 1.7.4.1
[email protected] Dec 15 11:33:14 ~# 
32
Johnny Utahh

Para mais informações sobre o modo Git, consulte esta resposta .

A capacidade do Git de armazenar metadados de arquivo é limitada a um subconjunto simples de informações para permitir que o Git rastreie algumas alterações básicas do sistema de arquivos, permitindo que o Git rastreie alterações relevantes para o gerenciamento do código-fonte; como se um arquivo foi modificado e se um arquivo é regular ou executável.

O Git não tenta implementar nenhuma noção de sistema de arquivos, deixando as rotinas do sistema de arquivos para uma implementação real do sistema de arquivos. Isso faz sentido para permitir que o Git funcione igualmente, seja em um sistema de arquivos FAT32, NTFS, EXT3, XFS, NFS, etc. em execução no Linux, MacOS, Windows, etc.

23
Dan Cruz

Essas são as permissões de arquivo como valores de permissões no estilo unix. Eles são impressos em octal e representam grupos de 3 bits para leitura, gravação e execução. Se você olhar para um objeto de árvore no git (por exemplo: git ls-tree HEAD) você pode ver todos os registros git sobre o conteúdo de um diretório. Essa árvore contém árvores e blobs com os bits de permissão

C:\project>git ls-tree HEAD
100644 blob 66f3f25c8ca9ae73b99669aca6ba5ecfa4703b2b    .gitignore
100644 blob 60b88ac20b8b7cccdcd856e65415a9eb9495b63a    Makefile
040000 tree e1d9381e4d12effea7e33f8d7e2b16e372f67b51    demos
100644 blob a60e08eeb9f75160ae2bf6a9feeff3c1c75bfc1d    doxygen.cfg

6 significa leitura e gravação, 4 é somente leitura.

7
patthoyts

Não, o git não armazena metadados completos. Ele armazena apenas o tipo do arquivo (e é limitado a arquivos regulares, diretórios e links simbólicos) e se o arquivo é executável (quais diretórios são por padrão, é claro).

3
fge