sistemas de controlo de versões
DESCRIPTION
Talk "Sistemas de Controlo de Versões", Seminários 2011/2012 - Mestrado em Eng. Informática, 28 November 2011TRANSCRIPT
![Page 2: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/2.jpg)
Sistemas de Controlo de Versões?
Friday, December 2, 2011
![Page 3: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/3.jpg)
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
![Page 4: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/4.jpg)
Porquê?
Friday, December 2, 2011
![Page 5: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/5.jpg)
Necessidades
• trabalhar / colaborar com mais pessoas
• guardar um histórico
• nunca perder o trabalho
• poder voltar atrás se algo correr mal
• bug tracking
Friday, December 2, 2011
![Page 6: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/6.jpg)
O que não é um VCS?
Friday, December 2, 2011
![Page 7: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/7.jpg)
Não são VCS
• Ficheiro .zip, .tar, .tgz, etc.
• Dropbox
• GMail
• Qualquer outra ferramenta de backup
Friday, December 2, 2011
![Page 8: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/8.jpg)
Como funciona?
Repositório
Friday, December 2, 2011
![Page 9: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/9.jpg)
Como funciona?
Repositório
Checkout
Friday, December 2, 2011
![Page 10: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/10.jpg)
Como funciona?
Repositório
Checkout
modifica
Utilizador
Friday, December 2, 2011
![Page 11: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/11.jpg)
Como funciona?
Repositório
Checkout
modifica
Utilizador
commit
Repositório
Friday, December 2, 2011
![Page 12: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/12.jpg)
Repositório
João
Ana Pedro
Tiago
Centralizado
Friday, December 2, 2011
![Page 13: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/13.jpg)
João
Ana Pedro
Tiago
Distribuído
Friday, December 2, 2011
![Page 14: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/14.jpg)
CVS
Friday, December 2, 2011
![Page 15: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/15.jpg)
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.html
Friday, December 2, 2011
![Page 16: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/16.jpg)
Sun WorkShop TeamWare
Friday, December 2, 2011
![Page 17: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/17.jpg)
TeamWare
• commits locais
• não é preciso estar online
• distribuído (peer-to-peer)
http://docs.oracle.com/cd/E19957-01/806-3573/underhood.html
Friday, December 2, 2011
![Page 19: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/19.jpg)
Friday, December 2, 2011
![Page 20: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/20.jpg)
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.html
Friday, December 2, 2011
![Page 21: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/21.jpg)
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.html
Friday, December 2, 2011
![Page 22: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/22.jpg)
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.html
Friday, December 2, 2011
![Page 23: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/23.jpg)
Git
• o conteúdo versus o ficheiro
• SHA1 versus revision number
• sem metadata
• branching e merging simplificado
http://peepcode.com/products/git-internals-pdf
Friday, December 2, 2011
![Page 24: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/24.jpg)
Git
• tudo é guardado como um objecto
• dentro da directoria .git
• quatro tipos de objectos:
http://peepcode.com/products/git-internals-pdf
blobtreecommittag
Friday, December 2, 2011
![Page 25: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/25.jpg)
blob
• o conteúdo de ficheiros é guardado como um blob
• sem metadados
Friday, December 2, 2011
![Page 26: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/26.jpg)
blob
blob [content_size]Your content here
lorem ipsum lorem ipsum
Friday, December 2, 2011
![Page 27: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/27.jpg)
tree
• para directorias
• recursivo
• representação guardada em texto
Friday, December 2, 2011
![Page 28: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/28.jpg)
tree
tree [content_size]
100644 blob b5f21a README100644 blob afe433 Makefile.pl040000 tree a42cd0 lib
Friday, December 2, 2011
![Page 29: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/29.jpg)
commit
• permite criar o histórico
• contem um ponteiro para uma tree
• informação sobre o autor e a modificação efectuada
Friday, December 2, 2011
![Page 30: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/30.jpg)
commitcommit [content_size]tree 23edfcauthor Nuno Morgadinho <[email protected]>committer Nuno Morgadinho <[email protected]>
commit without a parent
initial revision
Friday, December 2, 2011
![Page 31: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/31.jpg)
tag
• trata-se de um “etiqueta” para um determinado commit
• pode ter associada uma descrição
• assinada digitalmente via GPG
Friday, December 2, 2011
![Page 32: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/32.jpg)
tagtag [content_size]object 123fectype committag v1tagger Nuno Morgadinho <[email protected]> 123456789
release 1.0!
Friday, December 2, 2011
![Page 33: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/33.jpg)
Em Resumo
CVSSVN
TeamWareGit
Centralizados Distribuídos
Friday, December 2, 2011
![Page 34: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/34.jpg)
Outros
SCCSRCSCVSSVN
TeamWareGit
MercurialBazaar
Centralizados Distribuídos
Friday, December 2, 2011
![Page 35: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/35.jpg)
Outros
SCCSRCSCVSSVN
TeamWareGit
MercurialBazaar
IBM RationalPerforce
BitKeeperCode Co-op
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
Centralizados Distribuídos
Livre
Comercial
Friday, December 2, 2011
![Page 36: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/36.jpg)
$ mkdir myproject $ cd myproject $ git init Initialized empty Git repository in .git/
Criar Repositório
Friday, December 2, 2011
![Page 37: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/37.jpg)
$ 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.pl
Adicionar Ficheiro
Friday, December 2, 2011
![Page 38: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/38.jpg)
$ 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)
Adicionar Ficheiro
Friday, December 2, 2011
![Page 39: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/39.jpg)
$ git log hello.pl commit c232a1cd16885e283e7122ee51ecebc029173e48 Author: Nuno Morgadinho <[email protected]> Date: Sun Nov 23 21:43:10 2011 +0000
initial content
Ver Histórico
Friday, December 2, 2011
![Page 40: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/40.jpg)
$ git branch experiencia $ git branch experiencia * master
$ git checkout experiencia Switched to branch 'experiencia'
Criar Branch
Friday, December 2, 2011
![Page 41: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/41.jpg)
$ 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”
Merge Branch
Friday, December 2, 2011
![Page 42: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/42.jpg)
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 pop
Friday, December 2, 2011
![Page 43: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/43.jpg)
Friday, December 2, 2011
![Page 44: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/44.jpg)
Friday, December 2, 2011
![Page 45: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/45.jpg)
Friday, December 2, 2011
![Page 46: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/46.jpg)
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
![Page 47: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/47.jpg)
Ambiente de Desenvolvimento
localmente staging produção
Friday, December 2, 2011
![Page 48: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/48.jpg)
Ambiente de Desenvolvimento
localmente staging produção
commit
Friday, December 2, 2011
![Page 49: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/49.jpg)
Ambiente de Desenvolvimento
localmente staging produção
github
commit
commit
Friday, December 2, 2011
![Page 50: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/50.jpg)
Ambiente de Desenvolvimento
localmente staging produção
github
commit
commit
pull
Friday, December 2, 2011
![Page 51: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/51.jpg)
Ambiente de Desenvolvimento
localmente staging produção
github
commit
commit
pull
Testes
Friday, December 2, 2011
![Page 52: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/52.jpg)
Ambiente de Desenvolvimento
localmente staging produção
github
commit
commit
pull
pull
Release
Friday, December 2, 2011
![Page 53: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/53.jpg)
Exercício I
• Criar um projecto no GitHub
• Adicionar ficheiros ao repositório
• Fazer commit
Friday, December 2, 2011
![Page 54: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/54.jpg)
Exercício II
• Criar um branch experimental
• Merge
Friday, December 2, 2011
![Page 55: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/55.jpg)
Livros
Friday, December 2, 2011
![Page 56: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/56.jpg)
Links
http://git-scm.com/
http://peepcode.com/products/git
http://peepcode.com/products/git-internals-pdf
Friday, December 2, 2011
![Page 57: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/57.jpg)
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
![Page 58: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/58.jpg)
Questões?
Friday, December 2, 2011
![Page 59: Sistemas de Controlo de Versões](https://reader030.vdocuments.com.br/reader030/viewer/2022020101/54942030b47959962d8b58a0/html5/thumbnails/59.jpg)
Obrigado
Nuno Morgadinho@morgadin
http://www.morgadinho.org
Friday, December 2, 2011