Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Git Internals I

Git Internals I

Eu falo sobre os 4 tipos de objetos de Git e como eles se relacionam. Alguns exemplos práticos no fim da apresentação.

Avatar for Daniel Libanori

Daniel Libanori

June 03, 2019
Tweet

More Decks by Daniel Libanori

Other Decks in Technology

Transcript

  1. O que é? • Version Control System (VCS), Source Code

    Manager (SCM), Revision Control System (RCS) • Concurrent Version System (cvs), Subversion (svn), Bazaar (bzr), Mercurial (hg), tar + gzip + diff + patch • Distribuídos vs Centralizados
  2. Histórico • BitKeeper (2005): Free as a beer • Larry

    McVoy vs Andrew Tridgell • Não há bons VCS • Vou fazer o meu! • svn update ZZZzzz…
  3. Critérios 1. Tomar o CVS como um exemplo do que

    não fazer; na dúvida, tomar exatamente a decisão contrária 2. Suportar um fluxo distribuído, como o BitKeeper 3. Várias firmes proteções contra corrompimento de arquivos, seja por acidente ou origem maldosa 4. Alta performance
  4. Desenvolvimento • shell + diff + patch + gzip +

    … • Inicio: 3 de abril de 2005 • Anúncio: 6 de abril de 2005 • Auto-hospedagem: 7 de abril de 2005 • Objetivos do Linus: 29 de abril de 2005 • Kernel 2.6.12: 16 de junho de 2005
  5. Características • Facilitate distributed development • Scale to handle thousands

    of developers • Perform quickly and efficiently • Maintain integrity and trust • Enforce accountability • Immutability • Atomic transactions • Support and encourage branched development • Complete repositories • A clean internal design • Be free, as in freedom
  6. Git as Database System Index Data store Traditional Database ISAM

    Data records Filesystem Directories Blocks of data Git .git/objects/hash Blob objects, tree objects
  7. Git Blobs • Binary Large Object • Não possui meta-dados

    como nome, localização, permissões etc • Opaco
  8. Git Commits • Author, committer, commit date, log message etc

    • Tree • Commit parent • Root: no parent!
  9. Index • Dinâmico • Temporário • Estrutura de diretório em

    um tempo específico • git add, git commit, git reset etc
  10. Referências • Version Control with Git, O’Reilly - cap 4

    e 5 • https://git-scm.com/book/en/v2/Git-Internals-Plumbing- and-Porcelain