segunda-feira, 25 de novembro de 2013

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.
 Fonte: SOMASUNDARAM, R. Git: Version Control for Everyone Beginner's Guide. Birmingham - Mumbai: Packt Publishing Ltd, 2013

Um comentário:

  1. Um commit realizado no Git é referenciado pela seu hash sha1 aquele numero feioso.

    Normalmente não precisamos saber ele todo, podemos fazer navegação pelos nove primeiros digitos.

    exemplo git diff HEAD..9dfdsf3df

    Uma TAG é utilizada para marcar algum commit específico podendo referencia-lo agora através do nome TAG atribuido a ele. O proprio Git tem uma TAG chamada HEAD que está sempre referenciado ao ultimo commit do branch master.

    podemos utiliza-lo a qualquer hora para voltar a versão mais recente de nosso projeto

    git checkout HEAD

    Conforme o modelo de funcionamento do GIT, inverso ao dos servidores centralizados(isso merece um post), a linha principal do git(master) é a versão de produção e não a versão de desenvolvimento. Então a cada release normalmente temos TAG da versão anexadas ao commit V1.01, V1.02

    Abraço, parabens pelo post.

    ResponderExcluir