0
BOM DIA!
meu nome: Alwin “Yogarine” Garside
ALVENIR
ALVES
 
AL W IN
WhoAmI? <ul><li>Desenvolvedor PHP há 4 anos </li></ul><ul><li>3 anos de experiência com Subversion </li></ul><ul><li>1 ano...
O que vou falar tanto? <ul><li>O que é VCS? </li></ul><ul><li>Porquê VCS? </li></ul><ul><li>Centralizado vs Distribuído </...
MONOTONE VCS BZR GIT SVN CVS MERCURIAL GNU ARCH SVK Desenvolvimento organizado com
WTF = VCS!?
 
Visual C# (ufa...) ‏
VERSION CONTROL SYSTEM
SISTEMA DE CONTROLE DE VERSÃO
HUH?
PROJETOS SEM VCS:
Pasta por data?
Pasta por versão?
VCS AJUDA A... <ul><li>...MANTER UM  CHANGELOG </li></ul>
CHANGELOG?
CHANGELOG = LOG DE MUDANÇAS
 
...voltando, VCS AJUDA A... <ul><li>...MANTER UM  CHANGELOG </li></ul><ul><li>...VISUALIZAR E APLICAR  DIFF 'S </li></ul>
DIFF'S?
DIFF = DIFERENÇA
DIFF UNIFICADA:
DIFF LADO-AO-LADO:
...voltando, VCS AJUDA A... <ul><li>...MANTER UM  CHANGELOG </li></ul><ul><li>...VISUALIZAR E APLICAR  DIFF 'S </li></ul><...
BRANCHES?
BRANCH = GALHO
GALHOS:
PROJETO = ÁRVORE (TREE) ‏
TRONCO (TRUNK) ‏
TREE => TRUNK => BRANCHES
PROJECT TREE: 0.1 0.2 0.3 Feature A Feature B Feature C Feature D Feature E TRUNK SERIES BRANCHES: FEATURE BRANCHES:
BRANCHES!
...voltando, VCS AJUDA A... <ul><li>...MANTER UM  CHANGELOG </li></ul><ul><li>...VISUALIZAR E APLICAR  DIFF 'S </li></ul><...
MERGE?
MERGE = JUNÇÃO
0.1 0.2 0.3 Feature A Feature B Feature C Feature D Feature E TRUNK SERIES BRANCHES FEATURE BRANCHES
0.1 0.2 0.3 Feature A Feature B Feature C Feature D Feature E TRUNK MERGE
...emfim, VCS AJUDA A... <ul><li>...MANTER UM  CHANGELOG </li></ul><ul><li>...VISUALIZAR E APLICAR  DIFF 'S </li></ul><ul>...
CENTRALIZADO VS. DISTRIBUÍDO
VCS CENTRALIZADO <ul><li>REPOSITÓRIO CENTRALIZADO </li></ul><ul><li>COMPLICA CRIAÇÃO DE “FEATURE BRANCHES” </li></ul><ul><...
WORKING COPY?
WORKING COPY = CÓPIA DE TRABALHO
WORKING COPY REPOSITÓRIO WORKING COPY SERVIDOR REVISÂO 123 PEER
WORKING COPY!
...anyway, VCS CENTRALIZADO: <ul><li>REPOSITÓRIO CENTRALIZADO </li></ul><ul><li>COMPLICA CRIAÇÃO DE “FEATURE BRANCHES” </l...
VCS CENTRALIZADO REPOSITÓRIO PEER PEER MANTENEDOR PEER PEER SERVIDOR
VCS DISTRIBUIDO: <ul><li>REPOSITÓRIO DISTRIBUÍDO </li></ul><ul><li>FACILITA CRIAÇÃO DE BRANCHES </li></ul><ul><li>COLABORA...
VCS DISTRIBUIDO main 1.2 feature-tal bugfix-bar main 1.2 main servidor 1.2 feature-x bugfix-y MANTENEDOR JOÃO JOSÉ bugfix ...
COMANDOS BÁSICOS DE VCS
COMANDOS BÁSICOS DE VCS <ul><li>CHECKOUT </li></ul>
CHECKOUT REPOSITÓRIO WORKING COPY SERVIDOR REVISÃO 123 PEER CHECKOUT
COMANDOS BÁSICOS DE VCS <ul><li>checkout  (co) ‏ </li></ul><ul><li>commit  (cm) ‏ </li></ul>
COMMIT REPOSITÓRIO WORKING COPY SERVIDOR REVISÃO 124 PEER COMMIT
COMANDOS BÁSICOS DE VCS <ul><li>checkout  (co) ‏ </li></ul><ul><li>commit  (cm) ‏ </li></ul><ul><li>import </li></ul>
IMPORT REPOSITÓRIO PROJETO SEM VCS SERVIDOR REVISÂO 1 PEER
COMANDOS BÁSICOS DE VCS <ul><li>checkout  (co) ‏ </li></ul><ul><li>commit  (cm) ‏ </li></ul><ul><li>import </li></ul><ul><...
EXPORT REPOSITÓRIO PASTA SEM VCS SERVIDOR REVISÃO 123 PEER
COMANDOS BÁSICOS DE VCS <ul><li>checkout  (co) ‏ </li></ul><ul><li>commit  (cm) ‏ </li></ul><ul><li>import </li></ul><ul><...
INTRODUÇÃO A SVN, BZR e GIT
INTRODUÇÃO A SVN, BZR e GIT <ul><li>Introdução ao uso das ferramentas da  linha de comando </li></ul><ul><li>Assumindo que...
SVN
SVN = Subversion
Subversion <ul><li>Centralizado </li></ul><ul><li>Mais usado hoje em dia </li></ul><ul><li>Google Code, Sourceforge, etc. ...
Subversion <ul><li>Repositório num diretório público, pode ser hospedado pelo http ou protocolo proprietário </li></ul><ul...
Subversion <ul><li>Ferramentas de linha de comando: </li></ul><ul><ul><li>svn </li></ul></ul><ul><ul><li>svnadmin </li></u...
Subversion <ul><li>Criando um novo repositório: </li></ul><ul><ul><li># svnadmin create /var/svn/meu_repo </li></ul></ul>
Subversion <ul><li>Importando um novo projeto no repositório: </li></ul><ul><ul><li>$ cd meuprojeto </li></ul></ul><ul><ul...
Subversion <ul><li>Fazendo um checkout do repositório </li></ul><ul><ul><li>$ svn checkout /var/svn/meu_repo/trunk meuproj...
Subversion <ul><li>Dando commit </li></ul><ul><ul><li>$ cd meuprojeto </li></ul></ul><ul><ul><li># svn commit -m “Corrigiu...
Subversion <ul><li>Criando um branch </li></ul><ul><ul><li># svn mkdir /var/svn/meu_repo/branches </li></ul></ul><ul><ul><...
Subversion <ul><li>Fazendo merge com outro branch: </li></ul><ul><ul><li>$ cd meu_projeto </li></ul></ul><ul><ul><li>$ svn...
BZR
BZR = Bazaar
Bazaar <ul><li>Feito para poder ser usado de forma distribuída ou centralizada </li></ul><ul><li>Desenvolvida pela Canonic...
Bazaar <ul><li>Metadata fica na pasta .bzr </li></ul><ul><li>Metadata apenas na pasta principal </li></ul><ul><li>Uma past...
Bazaar <ul><li>Criar branch para um novo projeto: </li></ul><ul><ul><li>$ cd meuprojeto </li></ul></ul><ul><ul><li>$ bzr i...
Bazaar <ul><li>Criar branch do seu projeto: </li></ul><ul><ul><li>$ bzr branch meuprojeto meuprojeto-foo </li></ul></ul><u...
GIT
GIT <ul><li>Distribuído </li></ul><ul><li>Criado pelo Linus Torvalds para ser usado no desenvolvimento do kernel Linux </l...
GIT <ul><li>Initializar um branch: </li></ul><ul><ul><li>$ cd meuprojeto </li></ul></ul><ul><ul><li>$ git init </li></ul><...
PERGUNTAS?
Mais informações: <ul><li>Sites </li></ul><ul><ul><li>http://subversion.tigris.org </li></ul></ul><ul><ul><li>http://svnbo...
Upcoming SlideShare
Loading in...5
×

Desenvolvimento organizado com VCS

1,187

Published on

Published in: Technology
2 Comments
2 Likes
Statistics
Notes
No Downloads
Views
Total Views
1,187
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
31
Comments
2
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Desenvolvimento organizado com VCS"

  1. 1. BOM DIA!
  2. 2. meu nome: Alwin “Yogarine” Garside
  3. 3. ALVENIR
  4. 4. ALVES
  5. 6. AL W IN
  6. 7. WhoAmI? <ul><li>Desenvolvedor PHP há 4 anos </li></ul><ul><li>3 anos de experiência com Subversion </li></ul><ul><li>1 ano de experiência com Bazaar </li></ul><ul><li>SysAdmin/Developer na UEPB (2006-2008) ‏ </li></ul><ul><li>Developer na Itline/CESED (2008-2009) ‏ </li></ul>
  7. 8. O que vou falar tanto? <ul><li>O que é VCS? </li></ul><ul><li>Porquê VCS? </li></ul><ul><li>Centralizado vs Distribuído </li></ul><ul><li>Comandos básicos de VCS </li></ul><ul><li>Introdução a svn, bzr e git </li></ul>
  8. 9. MONOTONE VCS BZR GIT SVN CVS MERCURIAL GNU ARCH SVK Desenvolvimento organizado com
  9. 10. WTF = VCS!?
  10. 12. Visual C# (ufa...) ‏
  11. 13. VERSION CONTROL SYSTEM
  12. 14. SISTEMA DE CONTROLE DE VERSÃO
  13. 15. HUH?
  14. 16. PROJETOS SEM VCS:
  15. 17. Pasta por data?
  16. 18. Pasta por versão?
  17. 19. VCS AJUDA A... <ul><li>...MANTER UM CHANGELOG </li></ul>
  18. 20. CHANGELOG?
  19. 21. CHANGELOG = LOG DE MUDANÇAS
  20. 23. ...voltando, VCS AJUDA A... <ul><li>...MANTER UM CHANGELOG </li></ul><ul><li>...VISUALIZAR E APLICAR DIFF 'S </li></ul>
  21. 24. DIFF'S?
  22. 25. DIFF = DIFERENÇA
  23. 26. DIFF UNIFICADA:
  24. 27. DIFF LADO-AO-LADO:
  25. 28. ...voltando, VCS AJUDA A... <ul><li>...MANTER UM CHANGELOG </li></ul><ul><li>...VISUALIZAR E APLICAR DIFF 'S </li></ul><ul><li>...TRABALHAR COM MULTIPLAS BRANCHES </li></ul>
  26. 29. BRANCHES?
  27. 30. BRANCH = GALHO
  28. 31. GALHOS:
  29. 32. PROJETO = ÁRVORE (TREE) ‏
  30. 33. TRONCO (TRUNK) ‏
  31. 34. TREE => TRUNK => BRANCHES
  32. 35. PROJECT TREE: 0.1 0.2 0.3 Feature A Feature B Feature C Feature D Feature E TRUNK SERIES BRANCHES: FEATURE BRANCHES:
  33. 36. BRANCHES!
  34. 37. ...voltando, VCS AJUDA A... <ul><li>...MANTER UM CHANGELOG </li></ul><ul><li>...VISUALIZAR E APLICAR DIFF 'S </li></ul><ul><li>...TRABALHAR COM MULTIPLAS BRANCHES </li></ul><ul><li>...FAZER UM MERGE ENTRE 2 BRANCHES </li></ul>
  35. 38. MERGE?
  36. 39. MERGE = JUNÇÃO
  37. 40. 0.1 0.2 0.3 Feature A Feature B Feature C Feature D Feature E TRUNK SERIES BRANCHES FEATURE BRANCHES
  38. 41. 0.1 0.2 0.3 Feature A Feature B Feature C Feature D Feature E TRUNK MERGE
  39. 42. ...emfim, VCS AJUDA A... <ul><li>...MANTER UM CHANGELOG </li></ul><ul><li>...VISUALIZAR E APLICAR DIFF 'S </li></ul><ul><li>...TRABALHAR COM MULTIPLAS BRANCHES </li></ul><ul><li>...FAZER MERGES ENTRE BRANCHES </li></ul><ul><li>...MUITO, MUITO MAIS! </li></ul>
  40. 43. CENTRALIZADO VS. DISTRIBUÍDO
  41. 44. VCS CENTRALIZADO <ul><li>REPOSITÓRIO CENTRALIZADO </li></ul><ul><li>COMPLICA CRIAÇÃO DE “FEATURE BRANCHES” </li></ul><ul><li>COLABORADORES MANDAM PATCHES (DIFF'S) PARA OS MANTENEDORES </li></ul><ul><li>OS DESENVOLVEDORES TRABALHAM COM UM WORKING COPY </li></ul>
  42. 45. WORKING COPY?
  43. 46. WORKING COPY = CÓPIA DE TRABALHO
  44. 47. WORKING COPY REPOSITÓRIO WORKING COPY SERVIDOR REVISÂO 123 PEER
  45. 48. WORKING COPY!
  46. 49. ...anyway, VCS CENTRALIZADO: <ul><li>REPOSITÓRIO CENTRALIZADO </li></ul><ul><li>COMPLICA CRIAÇÃO DE “FEATURE BRANCHES” </li></ul><ul><li>COLABORADORES MANDAM PATCHES (DIFF'S) PARA OS MANTENEDORES </li></ul><ul><li>OS DESENVOLVEDORES TRABALHAM COM UM WORKING COPY </li></ul>
  47. 50. VCS CENTRALIZADO REPOSITÓRIO PEER PEER MANTENEDOR PEER PEER SERVIDOR
  48. 51. VCS DISTRIBUIDO: <ul><li>REPOSITÓRIO DISTRIBUÍDO </li></ul><ul><li>FACILITA CRIAÇÃO DE BRANCHES </li></ul><ul><li>COLABORADORES CRIAM BRANCHES </li></ul><ul><li>MANTENEDORES FAZER MERGES COM BRANCHES DE COLABORADORES </li></ul><ul><li>CADA DESENVOLVEDOR TRABALHA COM UM PRÓPRIO REPOSITÓRIO </li></ul>
  49. 52. VCS DISTRIBUIDO main 1.2 feature-tal bugfix-bar main 1.2 main servidor 1.2 feature-x bugfix-y MANTENEDOR JOÃO JOSÉ bugfix bar
  50. 53. COMANDOS BÁSICOS DE VCS
  51. 54. COMANDOS BÁSICOS DE VCS <ul><li>CHECKOUT </li></ul>
  52. 55. CHECKOUT REPOSITÓRIO WORKING COPY SERVIDOR REVISÃO 123 PEER CHECKOUT
  53. 56. COMANDOS BÁSICOS DE VCS <ul><li>checkout (co) ‏ </li></ul><ul><li>commit (cm) ‏ </li></ul>
  54. 57. COMMIT REPOSITÓRIO WORKING COPY SERVIDOR REVISÃO 124 PEER COMMIT
  55. 58. COMANDOS BÁSICOS DE VCS <ul><li>checkout (co) ‏ </li></ul><ul><li>commit (cm) ‏ </li></ul><ul><li>import </li></ul>
  56. 59. IMPORT REPOSITÓRIO PROJETO SEM VCS SERVIDOR REVISÂO 1 PEER
  57. 60. COMANDOS BÁSICOS DE VCS <ul><li>checkout (co) ‏ </li></ul><ul><li>commit (cm) ‏ </li></ul><ul><li>import </li></ul><ul><li>export </li></ul>
  58. 61. EXPORT REPOSITÓRIO PASTA SEM VCS SERVIDOR REVISÃO 123 PEER
  59. 62. COMANDOS BÁSICOS DE VCS <ul><li>checkout (co) ‏ </li></ul><ul><li>commit (cm) ‏ </li></ul><ul><li>import </li></ul><ul><li>export </li></ul><ul><li>diff </li></ul><ul><li>branch </li></ul><ul><li>merge </li></ul><ul><li>add </li></ul><ul><li>mv, cp, mkdir, etc. </li></ul>
  60. 63. INTRODUÇÃO A SVN, BZR e GIT
  61. 64. INTRODUÇÃO A SVN, BZR e GIT <ul><li>Introdução ao uso das ferramentas da linha de comando </li></ul><ul><li>Assumindo que está usando Linux </li></ul><ul><li>Para Windows existem ferramentas gráficas </li></ul>
  62. 65. SVN
  63. 66. SVN = Subversion
  64. 67. Subversion <ul><li>Centralizado </li></ul><ul><li>Mais usado hoje em dia </li></ul><ul><li>Google Code, Sourceforge, etc. </li></ul><ul><li>Ótima integração com Eclipse, Zend Studio, Netbeans, etc. </li></ul>
  65. 68. Subversion <ul><li>Repositório num diretório público, pode ser hospedado pelo http ou protocolo proprietário </li></ul><ul><li>Subdiretório .svn em cada diretório contém metadata </li></ul>
  66. 69. Subversion <ul><li>Ferramentas de linha de comando: </li></ul><ul><ul><li>svn </li></ul></ul><ul><ul><li>svnadmin </li></ul></ul>
  67. 70. Subversion <ul><li>Criando um novo repositório: </li></ul><ul><ul><li># svnadmin create /var/svn/meu_repo </li></ul></ul>
  68. 71. Subversion <ul><li>Importando um novo projeto no repositório: </li></ul><ul><ul><li>$ cd meuprojeto </li></ul></ul><ul><ul><li>$ svn import /var/svn/meu_repo/trunk </li></ul></ul>
  69. 72. Subversion <ul><li>Fazendo um checkout do repositório </li></ul><ul><ul><li>$ svn checkout /var/svn/meu_repo/trunk meuprojeto </li></ul></ul>
  70. 73. Subversion <ul><li>Dando commit </li></ul><ul><ul><li>$ cd meuprojeto </li></ul></ul><ul><ul><li># svn commit -m “Corrigiu bug #x” </li></ul></ul>
  71. 74. Subversion <ul><li>Criando um branch </li></ul><ul><ul><li># svn mkdir /var/svn/meu_repo/branches </li></ul></ul><ul><ul><li># svn cp /var/svn/meu_repo/trunk /var/svn/meu_repo/branches/meu_branch </li></ul></ul>
  72. 75. Subversion <ul><li>Fazendo merge com outro branch: </li></ul><ul><ul><li>$ cd meu_projeto </li></ul></ul><ul><ul><li>$ svn merge /var/svn/meu_repo/branches@2 /var/svn/meu_repo/branches@3 </li></ul></ul>
  73. 76. BZR
  74. 77. BZR = Bazaar
  75. 78. Bazaar <ul><li>Feito para poder ser usado de forma distribuída ou centralizada </li></ul><ul><li>Desenvolvida pela Canonical </li></ul><ul><li>Hospedagem no https://launchpad.net </li></ul><ul><li>Foco em facilidade de uso </li></ul>
  76. 79. Bazaar <ul><li>Metadata fica na pasta .bzr </li></ul><ul><li>Metadata apenas na pasta principal </li></ul><ul><li>Uma pasta pode ser working copy e branch ao mesmo tempo </li></ul>
  77. 80. Bazaar <ul><li>Criar branch para um novo projeto: </li></ul><ul><ul><li>$ cd meuprojeto </li></ul></ul><ul><ul><li>$ bzr init </li></ul></ul><ul><li>Adicionar arquivos no working copy: </li></ul><ul><ul><li>$ bzr add </li></ul></ul><ul><ul><li>$ bzr commit -m “Initial import” </li></ul></ul>
  78. 81. Bazaar <ul><li>Criar branch do seu projeto: </li></ul><ul><ul><li>$ bzr branch meuprojeto meuprojeto-foo </li></ul></ul><ul><li>Depois, para sincronizar o branch filho: </li></ul><ul><ul><li>$ cd meuprojeto-foo </li></ul></ul><ul><ul><li>$ bzr pull </li></ul></ul><ul><li>Empurrando as mudanças para branch pai: </li></ul><ul><ul><li>$ bzr commit </li></ul></ul><ul><ul><li>$ bzr push </li></ul></ul>
  79. 82. GIT
  80. 83. GIT <ul><li>Distribuído </li></ul><ul><li>Criado pelo Linus Torvalds para ser usado no desenvolvimento do kernel Linux </li></ul><ul><li>Otimizada para desempenho </li></ul>
  81. 84. GIT <ul><li>Initializar um branch: </li></ul><ul><ul><li>$ cd meuprojeto </li></ul></ul><ul><ul><li>$ git init </li></ul></ul><ul><li>Adicionar arquivos no working copy </li></ul><ul><ul><li>$ git add </li></ul></ul><ul><ul><li>$ git commit -m “Initial import” </li></ul></ul>
  82. 85. PERGUNTAS?
  83. 86. Mais informações: <ul><li>Sites </li></ul><ul><ul><li>http://subversion.tigris.org </li></ul></ul><ul><ul><li>http://svnbook.red-bean.com </li></ul></ul><ul><ul><li>http://bazaar-vcs.org </li></ul></ul><ul><ul><li>http://git-scm.com </li></ul></ul><ul><li>Entre em contato comigo: </li></ul><ul><ul><li>yogarine@gmail.com (e-mail / Google Talk) ‏ </li></ul></ul><ul><ul><li>yogarine@msn.com (Windows Live Messenger) ‏ </li></ul></ul><ul><ul><li>http://www.yogarine.net </li></ul></ul><ul><ul><li>http://twitter.com/yogarine </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×