Git - Object Store
O object
store, descrito no último post, é a parte principal da implementação do
repositório do Git. Ele contém os arquivos de dados original e todas as
mensagens de log, informações do autor, datas e outras informações requeridas
para gerar qualquer versão ou branch do projeto.
Dentro do objecto store há apenas quatro tipos de objetos, a
saber:
- Blobs (binary large object) que representa cada versão
de um arquivo. Esse tipo de objeto pode conter qualquer dado. Um blob
contém dados de um arquivo, mas não contém quaisquer metadados sobre ele
nem mesmo o seu nome.
- Tree que representa o primeiro nível de um diretório.
Ele registra identificadores para blob,
nome de caminhos, e um pouco dos metadados de todos os arquivos e
diretórios. Além disso, ele pode fazer referência a outros objetos tree, de forma recursiva,
criando assim, um hierarquia completa de arquivos e subdiretórios.
- Um objeto commit mantém metadados para cada
mudança introduzidas no repositório, incluindo o autor, quem fez a
submissão, data de quando foi feita a submissão e mensagens de log. Cada commit aponta para um objeto da árvore
que captura um snapshot completo, o estado do repositório
no momento em que a submissão foi realizada.
- Um objeto tag atribui um nome arbitrário, porém
legível, a um objeto
específico, geralmente um commit. Embora 9dfdsf3dfgfd435fds3333deaaaf5169 se refira
a uma exata e bem definida committer, um nome de tag mais
familiar como Ver-1.0-Alpha poder fazer mais sentido.