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

VCS e Git

talles
October 10, 2013

VCS e Git

talles

October 10, 2013
Tweet

More Decks by talles

Other Decks in Programming

Transcript

  1. Você já quis... • Trabalhar com várias pessoas no mesmo

    código? • Desfazer uma mudança em um código que você modificou? • Revisar como certo código foi feito? • Trabalhar em mais de uma funcionalidade em paralelo? • Experimentar algo sem influenciar no código que está funcionando? • Recuperar algum código que perdeu?
  2. Wikipédia “The need for a logical way to organize and

    control revisions has existed for almost as long as writing has existed, but revision control became much more important, and complicated, when the era of computing began.Today, the most capable (as well as complex) revision control systems are those used in software development, where a team of people may change the same files.”
  3. Terminologia Apesar de cada VCS trabalhar de uma forma particular,

    os conceitos e vocabulário são similares entre eles.
  4. Terminologia • Revisão • Commit • Branch • Trunk •

    Merge • Checkout • Update • Cópia de trabalho • Conflito • Diff • Tag
  5. Revisão Cada mudança no repositório gera uma revisão. A revisão

    possui um número que a identifica, podendo ser incremental ou não dependendo do VCS utilizado.
  6. Commit Commit é a escrita em um repositório. Um commit

    gera uma revisão. É muito comum utilizar o termo commit como sinônimo de revisão.
  7. Branch Uma linha de desenvolvimento do repositório que se desvia

    da linha principal em determinado ponto no histórico.
  8. Trunk É a linha principal de desenvolvimento. É considerado um

    branch (como outro qualquer) por alguns VCS, por outros não. O termo trunk vêm caindo em desuso, os VCS mais novos não utilizam-o.
  9. Merge Merge significa juntar o trabalho. Quando juntamos duas linhas

    de desenvolvimento (branch) isto é chamado de merge (merge de branches). Essa junção também tem que ser refletida nos arquivos, esse processo também é chamado de merge (merge de arquivos).
  10. Cópia de trabalho O repositório armazena seus dados em um

    formato próprio, para você trabalhar o repositório cria uma cópia de trabalho. Cópia de trabalho (ou working copy) são os arquivos locais criados pelo repositório para você trabalhar.
  11. Checkout Checkout é o ato de se obter uma cópia

    de trabalho. Veremos que no Git esse termo possui outro significado.
  12. Conflito Um conflito ocorre quando duas pessoas alteram uma mesma

    porção do arquivo e o VCS não consegue (automaticamente) realizar o merge dessas alterações. O VCS vai deixar o conflito para você resolver.
  13. Conflito <<<<<<< HEAD Esse é o conteúdo original. ======= Esse

    é o conteúdo modificado. >>>>>>> f7c3bc1d808e04732adf679965ccc34ca7ae3441
  14. Diff Diff (de difference) é a diferença entre dois arquivos

    (ou revisões). Existem diversas ferramentas que calculam e exibem essa diferença. É muito utilizado quando trabalhamos com VCS, grande parte da visualização das informações do repositório é feita através de diffs.
  15. Tag Tag (de etiqueta) é uma forma de marcar determinada

    revisão com algum especificado especial. A revisão é marcada com um nome amigável representando o que a tag significa. O uso mais comuns de tag é para marcar releases (novas versões), mas pode ser utilizado marcar para qualquer momento importante do repositório.
  16. VCS mais conhecidos • CVS (1986) • SourceSafe (1994) •

    Perforce (1995) • BitKeeper (1998) • Subversion (2000) • Darcs (2002) • Monotome (2003) • Mercurial (2005) • Git( 2005) • Bazaar (2005) • Team Foundation Server (2005) • Fossil (2007)
  17. Commits, trees e blobs “In many ways you can just

    see git as a filesystem — it is content- addressable, and it has a notion of versioning, but I really really designed it coming at the problem from the viewpoint of a filesystem person (hey, kernels is what I do), and I actually have absolutely zero interest in creating a traditional SCM system.”