Como o git percebe o conteúdo de um repositório alterado?

1

Se você modificar um arquivo previamente limpo, git avisos. Ele ainda faz isso se você definir os dados modificados desse arquivo como o que era anteriormente. Ainda assim, o git não lê os dados de todos os arquivos rastreados no diretório de trabalho. Não pode ser porque isso seria muito rápido. Eu tenho repos muitos GB em tamanho e git status é super rápido, maneira rápida de ter lido todos os dados no repositório.

  • Como o git faz isso?
  • Como alguém pode fazer git verificar o conteúdo de cada arquivo rastreado para verificar se eles não foram corrompidos desde a última vez que foram confirmados? De preferência, sem verificar o conteúdo do repo em um local diferente e perguntando a uma ferramenta diff sobre possíveis diferenças nos diretórios de trabalho.

Para entender melhor o que não pode estar acontecendo (descartar algumas opções), conduzi essa experiência: criei um sistema de arquivos dentro de um arquivo e copiei meu repositório de documentos (3 GB de arquivos rastreados) para lá. Então, desmontei, abri o arquivo em que o sistema de arquivos estava armazenado em um editor hexadecimal, procurei a palavra "indiferente" e troquei uma ocorrência dela pela palavra "implacável" (quantidade igual de espaço de armazenamento necessário para que eu não use bagunça o layout).

Em seguida, montei o sistema de arquivos novamente e, com certeza, o git não percebeu que algo havia mudado. Certifiquei-me de que o arquivo em que eu fiz a alteração foi rastreado, abrindo-o e procurando pela palavra "implacável". Na verdade, a primeira vez que eu troquei a palavra em um arquivo de backup ( *~ file) e não os acompanhei. Mas a segunda vez que a mudança ocorreu em um arquivo rastreado.

Mesmo depois de visualizar o arquivo (para que o carimbo de data / hora de acesso seja alterado), o git não percebeu a alteração. Se isso foi uma corrupção porque um raio cósmico atingiu meu disco rígido e mudou a palavra "indiferente" nesta ocorrência para a palavra "implacável", como eu poderia fazer isso para mim?

    
por UTF-8 04.01.2017 / 00:01

0 respostas

Tags