Desenvolvimento Colaborativo com
   VCS (Version Control System)
Danilo Resende - danilo.isr@gmail.com
Jorge Fernandes - j...
Introdução
●   Quem já contribuiu com algum projeto de
    Software livre?




                                          2
Cenário
●   Como você controla arquivos compartilhados?
●   Problemática:
    ●   Códigos sobrescritos.
    ●   Quem alter...
Cenário Ideal
●   Trabalho em equipe.
●   Histórico do projeto, com todas as mudanças
    realizadas.
●   Desenvolvimento ...
Modelos
●   Sistemas Centralizados:
    ●   Servidor: repositório central.
    ●   Cliente: diretório de trabalho.

●   Si...
Controle de versão
●   Histórico:
    ●   Registra toda a evolução do projeto, cada alteração sobre cada
        arquivo. ...
Funcionamento
●   Um VCS é composto por duas partes:
    ●   Repositório:
        –   Armazena o histórico de evolução do ...
Funcionamento




➔   A sincronização entre a área de trabalho e o repositório é feita através dos comandos de
    checkou...
Controle de versão Centralizado
●   Utiliza um repositório central.
●   Uso bastante simples e intuitivo.
●   Todos os arq...
Controle de versão Centralizado




                                  10
Controle de versão Distribuído
●   Cada desenvolvedor tem seu repositório.
●   Commits e updates acontecem localmente.
●  ...
Controle de versão Distribuído




                                 12
Operações Básicas
●   Sistemas Centralizados
    ●   Checkout: ação para criar uma cópia de trabalho.
    ●   Commit: ação...
Operações Básicas
●   Sistemas Distribuídos
    ●   Clone: ação para criar uma cópia de trabalho.
    ●   Commit: ação par...
Histórico (Software Livre)
●   Sistemas Centralizados:
    ●   SCCS (1972);
    ●   RCS (1982);
    ●   CVS (1990);
    ● ...
Histórico (Open Source)
●   Sistemas Distribuídos:
    ●   GNU arch (2001);
    ●   Darcs (2002);
    ●   DCVS (2002);
   ...
Referências
●   Conceitos Básicos de Controle de Versão de Software -
    Centralizado e Distribuído
    ●   http://www.pr...
Dúvidas ??


             18
Upcoming SlideShare
Loading in …5
×

Desenvolvimento Colaborativo com VCS

1,672 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,672
On SlideShare
0
From Embeds
0
Number of Embeds
67
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Desenvolvimento Colaborativo com VCS

  1. 1. Desenvolvimento Colaborativo com VCS (Version Control System) Danilo Resende - danilo.isr@gmail.com Jorge Fernandes - jorgefariafernandes@gmail.com Nícolas Lazarte - nicolas@nucleoassistir.com Artigo sob a Licença Creative Commons.
  2. 2. Introdução ● Quem já contribuiu com algum projeto de Software livre? 2
  3. 3. Cenário ● Como você controla arquivos compartilhados? ● Problemática: ● Códigos sobrescritos. ● Quem alterou o código e quando? ● Deseja recuperar um código anterior? ● Deseja manter variações do sistema ao mesmo tempo? 3
  4. 4. Cenário Ideal ● Trabalho em equipe. ● Histórico do projeto, com todas as mudanças realizadas. ● Desenvolvimento paralelizado através do conceito de ramos. ● Recuperação de pontos específicos durante o processo de desenvolvimento do software. 4
  5. 5. Modelos ● Sistemas Centralizados: ● Servidor: repositório central. ● Cliente: diretório de trabalho. ● Sistemas Distribuídos: ● Qualquer um pode ser o servidor. ● Repositório acoplado ao diretório de trabalho. ● Histórico completo. ● Trabalho desconectado. 5
  6. 6. Controle de versão ● Histórico: ● Registra toda a evolução do projeto, cada alteração sobre cada arquivo. Com essas informações sabe-se quem fez o que, quando e onde. Além disso, permite reconstruir uma revisão específica do arquivo sempre que desejado. ● Colaboração: ● O controle de versão possibilita que vários desenvolvedores trabalhem em paralelo sobre os mesmos arquivos sem que um sobrescreva o código de outro. ● Variações no Projeto: ● Mantém versões diferentes do mesmo projeto, uma vez que a mais recente ainda está em fase de desenvolvimento ou de testes. 6
  7. 7. Funcionamento ● Um VCS é composto por duas partes: ● Repositório: – Armazena o histórico de evolução do projeto. – Registra toda e qualquer alteração feita nos itens versionados. ● Área de Trabalho: – Contém a cópia dos itens versionados no servidor. – Os itens versionados são monitorados para identificar as mudanças realizadas. – Cada desenvolvedor possui a sua Área de Trabalho. 7
  8. 8. Funcionamento ➔ A sincronização entre a área de trabalho e o repositório é feita através dos comandos de checkout e commit. ➔ Cada commit gera uma nova revisão no repositório, contendo as modificações feitas, data e autor. As revisões antigas são mantidas e podem ser recuperadas e analisadas sempre que desejado. O conjunto das revisões é o histórico do projeto. 8
  9. 9. Controle de versão Centralizado ● Utiliza um repositório central. ● Uso bastante simples e intuitivo. ● Todos os arquivos são encontrados no repositório central. ● Alguns prós: ● Alguns contras: ● Modelo simples ● Pouco eficiente para ● Maior controle de projetos grande (se acesso aos arquivo comparado ao modelo distribuído) ● Extremamente dependente do repositório 9 central.
  10. 10. Controle de versão Centralizado 10
  11. 11. Controle de versão Distribuído ● Cada desenvolvedor tem seu repositório. ● Commits e updates acontecem localmente. ● Comunicação feita através dos comandos pull e push. ● Mesclagem das revisões feita com merge. ● Alguns prós: ● Alguns contras: ● Rapidez ● Conhecimento ● Autonomia ● Controle ainda é ● Produtividade centralizado 11
  12. 12. Controle de versão Distribuído 12
  13. 13. Operações Básicas ● Sistemas Centralizados ● Checkout: ação para criar uma cópia de trabalho. ● Commit: ação de enviar modificações feitas na cópia de trabalho para o respositório. ● Update: significa trazer modificações do repositório para a cópia de trabalho. ● Branch: ramificação do código fonte em algum momento da sua história. ● Merge: significa mesclar modificações da cópia de trabalho com as de outro branch/versão. 13
  14. 14. Operações Básicas ● Sistemas Distribuídos ● Clone: ação para criar uma cópia de trabalho. ● Commit: ação para enviar as modificações para o repositório. ● Update: trazer modificações do repositório para a cópia de trabalho. ● Branch: ramificação do código fonte em algum momento da sua história. ● Merge: significa mesclar modificações da cópia de trabalho com as de outro branch/versão qualquer. ● Push: enviar modificações do ramo para um outro ramo, espelho deste. ● Pull: trazer modificações de um outro ramo para o atual, espelho do anterior. 14
  15. 15. Histórico (Software Livre) ● Sistemas Centralizados: ● SCCS (1972); ● RCS (1982); ● CVS (1990); ● CVSNT (1998); ● Subversion (2000). 15
  16. 16. Histórico (Open Source) ● Sistemas Distribuídos: ● GNU arch (2001); ● Darcs (2002); ● DCVS (2002); ● SVK (2003); ● Monotone (2003); ● Codeville (2005); ● Git (2005); ● Mercurial (2005); ● Bazaar (2005); ● Fossil (2007). 16
  17. 17. Referências ● Conceitos Básicos de Controle de Versão de Software - Centralizado e Distribuído ● http://www.pronus.eng.br/artigos_tutoriais/gerencia_configuracao/conceitos_basi cos_controle_versao_centralizado_e_distribuido.php ● Revision Control ● http://en.wikipedia.org/wiki/Revision_control ● Introdução ao GIT - A Revolução Software Livre - Marcelo Henrique ● http://faraohh.wordpress.com ● Controle de Versão com Bazaar - Marcelo Barros de Almeida ● http://www.scribd.com/doc/10965126/ccbazaar 17
  18. 18. Dúvidas ?? 18

×