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.

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