Your SlideShare is downloading. ×
0
Sistemas de Controlo                            de Versões                           Nuno Morgadinho <nuno@widgilabs.com>F...
Sistemas de Controlo                            de Versões?Friday, December 2, 2011
Sistemas de Controlo                          de Versões (VCS)                    • software para gerir diferentes versões...
Porquê?Friday, December 2, 2011
Necessidades                    • trabalhar / colaborar com mais pessoas                    • guardar um histórico        ...
O que não é um VCS?Friday, December 2, 2011
Não são VCS                    • Ficheiro .zip, .tar, .tgz, etc.                    • Dropbox                    • GMail  ...
Como funciona?                  RepositórioFriday, December 2, 2011
Como funciona?                  Repositório                                Ch                                     ec      ...
Como funciona?                  Repositório                                Ch                                     ec      ...
Como funciona?                                                                        Repositório                  Reposit...
Centralizado                                   Tiago                           Ana   Repositório   Pedro                  ...
Distribuído                                 Tiago                           Ana           Pedro                           ...
CVSFriday, December 2, 2011
SVN                     • Em relação ao CVS:                      • Mais rápido                      • Menos informação tr...
Sun WorkShop                             TeamWareFriday, December 2, 2011
TeamWare                    • commits locais                    • não é preciso estar online                    • distribu...
Git                           http://git-scm.comFriday, December 2, 2011
Friday, December 2, 2011
Git - Necessidades                     • Facilitar o desenvolvimento distribuído                     • Ser escalável      ...
Git - Necessidades                     • Integridade e segurança dos dados                     • Responsabilidade         ...
Git - Necessidades                     • Suportar, facilitar e encorajar a criação e                             integraçã...
Git                    • o conteúdo versus o ficheiro                    • SHA1 versus revision number                    •...
Git                    • tudo é guardado como um objecto                    • dentro da directoria .git                   ...
blob                    • o conteúdo de ficheiros é guardado como                           um blob                    • se...
blob                           blob [content_size]                           Your content here                           l...
tree                    • para directorias                    • recursivo                    • representação guardada em t...
tree                           tree [content_size]                           100644 blob b5f21a README                    ...
commit                    • permite criar o histórico                    • contem um ponteiro para uma tree               ...
commit      commit [content_size]      tree 23edfc      author Nuno Morgadinho <nuno@widgilabs.com>      committer Nuno Mo...
tag                    • trata-se de um “etiqueta” para um                           determinado commit                   ...
tag                tag [content_size]                object 123fec                type commit                tag v1       ...
Em Resumo                           Centralizados   Distribuídos                               CVS          TeamWare      ...
Outros                           Centralizados   Distribuídos                              SCCS          TeamWare         ...
Outros                                                  Centralizados         Distribuídos                                ...
Criar Repositório                              $ mkdir myproject                              $ cd myproject              ...
Adicionar Ficheiro                               $ vi hello.pl                               $ git add hello.pl           ...
Adicionar Ficheiro                              $ vi hello.pl                              $ git add hello.pl             ...
Ver Histórico                            $ git log hello.pl                            commit c232a1cd16885e283e7122ee51ec...
Criar Branch                           $ git branch experiencia                           $ git branch                    ...
Merge Branch                            $ git merge experiencia                            Auto-merging hello.pl          ...
Git Stash                           $ git pull                           Git pull: error: Entry foo not uptodate. Cannot m...
Friday, December 2, 2011
Friday, December 2, 2011
Friday, December 2, 2011
Instalar o Git                    • Linux                     • sudo apt-get install git-core                    • Mac    ...
Ambiente de                           Desenvolvimento                           localmente   staging   produçãoFriday, Dec...
Ambiente de                           Desenvolvimento                                        commit                       ...
Ambiente de                           Desenvolvimento                                        commit                       ...
Ambiente de                           Desenvolvimento                                        commit                       ...
Ambiente de                           Desenvolvimento                                                    Testes           ...
Ambiente de                           Desenvolvimento                                                                     ...
Exercício I                    • Criar um projecto no GitHub                    • Adicionar ficheiros ao repositório       ...
Exercício II                    • Criar um branch experimental                    • MergeFriday, December 2, 2011
LivrosFriday, December 2, 2011
Links                           http://git-scm.com/                           http://peepcode.com/products/git            ...
Conclusão                    • Git é rápido, open-source, eficiente e                           distribuído                ...
Questões?Friday, December 2, 2011
Obrigado                           Nuno Morgadinho                             @morgadin                     http://www.mo...
Upcoming SlideShare
Loading in...5
×

Sistemas de Controlo de Versões

408

Published on

Talk "Sistemas de Controlo de Versões", Seminários 2011/2012 - Mestrado em Eng. Informática, 28 November 2011

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
408
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Sistemas de Controlo de Versões"

  1. 1. Sistemas de Controlo de Versões Nuno Morgadinho <nuno@widgilabs.com>Friday, December 2, 2011
  2. 2. Sistemas de Controlo de Versões?Friday, December 2, 2011
  3. 3. Sistemas de Controlo de Versões (VCS) • software para gerir diferentes versões • Conhecido vulgarmente como: • Version Control System (VCS) • Source Code Manager (SCM) • Revision Control System (RCS)Friday, December 2, 2011
  4. 4. Porquê?Friday, December 2, 2011
  5. 5. Necessidades • trabalhar / colaborar com mais pessoas • guardar um histórico • nunca perder o trabalho • poder voltar atrás se algo correr mal • bug trackingFriday, December 2, 2011
  6. 6. O que não é um VCS?Friday, December 2, 2011
  7. 7. Não são VCS • Ficheiro .zip, .tar, .tgz, etc. • Dropbox • GMail • Qualquer outra ferramenta de backupFriday, December 2, 2011
  8. 8. Como funciona? RepositórioFriday, December 2, 2011
  9. 9. Como funciona? Repositório Ch ec ko utFriday, December 2, 2011
  10. 10. Como funciona? Repositório Ch ec ko ut modifica UtilizadorFriday, December 2, 2011
  11. 11. Como funciona? Repositório Repositório Ch ec it ko m ut m co modifica UtilizadorFriday, December 2, 2011
  12. 12. Centralizado Tiago Ana Repositório Pedro JoãoFriday, December 2, 2011
  13. 13. Distribuído Tiago Ana Pedro JoãoFriday, December 2, 2011
  14. 14. CVSFriday, December 2, 2011
  15. 15. SVN • Em relação ao CVS: • Mais rápido • Menos informação transmitida • Detecção automática de ficheiros que mudaram de localização ou de nome • Correcção de muitos bugs no CVS http://tartarus.org/~simon/cvs-vs-svn.htmlFriday, December 2, 2011
  16. 16. Sun WorkShop TeamWareFriday, December 2, 2011
  17. 17. TeamWare • commits locais • não é preciso estar online • distribuído (peer-to-peer) http://docs.oracle.com/cd/E19957-01/806-3573/underhood.htmlFriday, December 2, 2011
  18. 18. Git http://git-scm.comFriday, December 2, 2011
  19. 19. Friday, December 2, 2011
  20. 20. Git - Necessidades • Facilitar o desenvolvimento distribuído • Ser escalável • Rápido e eficiente • Repositórios mais pequenos (por ex. no caso da Mozilla 30x) https://git.wiki.kernel.org/articles/g/i/t/GitSvnComparison_cb82.htmlFriday, December 2, 2011
  21. 21. Git - Necessidades • Integridade e segurança dos dados • Responsabilidade • Imutabilidade • Transações atómicas https://git.wiki.kernel.org/articles/g/i/t/GitSvnComparison_cb82.htmlFriday, December 2, 2011
  22. 22. Git - Necessidades • Suportar, facilitar e encorajar a criação e integração de branches • Repositórios completos • Arquitectura modular e extensível • Software Livre https://git.wiki.kernel.org/articles/g/i/t/GitSvnComparison_cb82.htmlFriday, December 2, 2011
  23. 23. Git • o conteúdo versus o ficheiro • SHA1 versus revision number • sem metadata • branching e merging simplificado http://peepcode.com/products/git-internals-pdfFriday, December 2, 2011
  24. 24. Git • tudo é guardado como um objecto • dentro da directoria .git • quatro tipos de objectos: blob tree commit tag http://peepcode.com/products/git-internals-pdfFriday, December 2, 2011
  25. 25. blob • o conteúdo de ficheiros é guardado como um blob • sem metadadosFriday, December 2, 2011
  26. 26. blob blob [content_size] Your content here lorem ipsum lorem ipsumFriday, December 2, 2011
  27. 27. tree • para directorias • recursivo • representação guardada em textoFriday, December 2, 2011
  28. 28. tree tree [content_size] 100644 blob b5f21a README 100644 blob afe433 Makefile.pl 040000 tree a42cd0 libFriday, December 2, 2011
  29. 29. commit • permite criar o histórico • contem um ponteiro para uma tree • informação sobre o autor e a modificação efectuadaFriday, December 2, 2011
  30. 30. commit commit [content_size] tree 23edfc author Nuno Morgadinho <nuno@widgilabs.com> committer Nuno Morgadinho <nuno@widgilabs.com> commit without a parent initial revisionFriday, December 2, 2011
  31. 31. tag • trata-se de um “etiqueta” para um determinado commit • pode ter associada uma descrição • assinada digitalmente via GPGFriday, December 2, 2011
  32. 32. tag tag [content_size] object 123fec type commit tag v1 tagger Nuno Morgadinho <nuno@widgilabs.com> 123456789 release 1.0!Friday, December 2, 2011
  33. 33. Em Resumo Centralizados Distribuídos CVS TeamWare SVN GitFriday, December 2, 2011
  34. 34. Outros Centralizados Distribuídos SCCS TeamWare RCS Git CVS Mercurial SVN BazaarFriday, December 2, 2011
  35. 35. Outros Centralizados Distribuídos SCCS TeamWare RCS Git Livre CVS Mercurial SVN Bazaar BitKeeper IBM Rational Comercial Perforce Code Co-ophttp://en.wikipedia.org/wiki/Comparison_of_revision_control_softwareFriday, December 2, 2011
  36. 36. Criar Repositório $ mkdir myproject $ cd myproject $ git init Initialized empty Git repository in .git/Friday, December 2, 2011
  37. 37. Adicionar Ficheiro $ vi hello.pl $ git add hello.pl $ git commit -m “initial content” [master (root-commit) c232a1c] initial 1 files changed, 3 insertions(+), 0 deletions(-) create mode 100644 hello.plFriday, December 2, 2011
  38. 38. Adicionar Ficheiro $ vi hello.pl $ git add hello.pl $ git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: hello.pl # $ git commit -m “initial content” [master (root-commit) c232a1c] initial 1 files changed, 3 insertions(+), 0 deletions(-) create mode 100644 hello.pl $ git status # On branch master nothing to commit (working directory clean)Friday, December 2, 2011
  39. 39. Ver Histórico $ git log hello.pl commit c232a1cd16885e283e7122ee51ecebc029173e48 Author: Nuno Morgadinho <nuno@widgilabs.com> Date: Sun Nov 23 21:43:10 2011 +0000 initial contentFriday, December 2, 2011
  40. 40. Criar Branch $ git branch experiencia $ git branch experiencia * master $ git checkout experiencia Switched to branch experienciaFriday, December 2, 2011
  41. 41. Merge Branch $ git merge experiencia Auto-merging hello.pl CONFLICT (content): Merge conflict in hello.pl Automatic merge failed; fix conflicts and then commit the result. $ git add hello.pl $ git commit -m “resolving conflict”Friday, December 2, 2011
  42. 42. Git Stash $ git pull Git pull: error: Entry foo not uptodate. Cannot merge $ git stash save Saved “WIP on master: e71813e...” $ git pull $ git stash popFriday, December 2, 2011
  43. 43. Friday, December 2, 2011
  44. 44. Friday, December 2, 2011
  45. 45. Friday, December 2, 2011
  46. 46. Instalar o Git • Linux • sudo apt-get install git-core • Mac • http://code.google.com/p/git-osx-installer/ • Windows • http://code.google.com/p/msysgit/Friday, December 2, 2011
  47. 47. Ambiente de Desenvolvimento localmente staging produçãoFriday, December 2, 2011
  48. 48. Ambiente de Desenvolvimento commit localmente staging produçãoFriday, December 2, 2011
  49. 49. Ambiente de Desenvolvimento commit localmente staging produção co mm it githubFriday, December 2, 2011
  50. 50. Ambiente de Desenvolvimento commit localmente staging produção co mm pull it githubFriday, December 2, 2011
  51. 51. Ambiente de Desenvolvimento Testes commit localmente staging produção co mm pull it githubFriday, December 2, 2011
  52. 52. Ambiente de Desenvolvimento Release commit pull localmente staging produção co mm pull it githubFriday, December 2, 2011
  53. 53. Exercício I • Criar um projecto no GitHub • Adicionar ficheiros ao repositório • Fazer commitFriday, December 2, 2011
  54. 54. Exercício II • Criar um branch experimental • MergeFriday, December 2, 2011
  55. 55. LivrosFriday, December 2, 2011
  56. 56. Links http://git-scm.com/ http://peepcode.com/products/git http://peepcode.com/products/git-internals-pdfFriday, December 2, 2011
  57. 57. Conclusão • Git é rápido, open-source, eficiente e distribuído • Não há desculpa para não se usar um VCS!Friday, December 2, 2011
  58. 58. Questões?Friday, December 2, 2011
  59. 59. Obrigado Nuno Morgadinho @morgadin http://www.morgadinho.orgFriday, December 2, 2011
  1. A particular slide catching your eye?

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

×