porque todo programador deve utilizar sistema de controle de versão?
DESCRIPTION
Estes slides foram apresentados no FREESON 2009, evento de software livre organizado pelo CESMAC, na palestra entitulada "Porque todo programador deve utilizar Sistema de Controle de Versão?"TRANSCRIPT
Porque todo programador deve usar Sistema de Controle de Versão?
Marco RosnerIFAL
Quem sou?
Marco Rosner
- Graduado em Sistemas de Informação pelo IFAL- Técnico em Administração e Projeto de Redes pelo CET/IFAL- Analista e desenvolvedor do SAEO- Desenvolvedor do Brisa- Organizador do Debian Festival
Quem já participou de um projeto?
Auto-avaliação
1 – Alguém já sobrescreveu o código de alguma outra pessoa?
2 – Você sabe quem e em que momento qualquer parte do sistema foi alterado?
3 – É difícil compartilhar o código fonte com todos da equipe?
Então, você...
Seu chefe...
Bate o desespero!
Mas o que é Sistema de Controle de Versão (SCV)?
Qual a importância?
- Compartilhamento de documentos e versionamento deles- Permitir trabalho em paralelo e controlar as modificações- Facilidade de aplicar manutenção e gerenciar a qualidade- Possibilidade de trabalhar em equipe (e agregar mais pessoas a equipe)
Onde se aplica?
- Wikis (Foswiki, Twiki, Wikipedia...)- Processadores de texto (Google Docs...)- CMS (Joomla!, Drupal, Mambo, Plone...)- Projetos de softwares- Documentação de software
Quem usa?
Conceitos fundamentais
- Repositório
- Cópia de trabalho (Working copy)
Conceitos fundamentais
- Estratégias de compartilhamento de arquivos
- Solução 1: Lock-Modify-Unlock● Lock pode causar problemas administrativos● Locking pode causar serialização desnecessária
- Solução 2: Copy-Modify-Merge
Conceitos fundamentais
- Revisões● calc/Makefile:2
integer.c:2 button.c:3
- Revisões Mistas● Atualizações e Submissões são separadas.
Conceitos fundamentais (Terminologia)
- Check out/Clone● Cria uma CT do repositório*
- Update● Atualiza uma CT com a última versão do repositório
- Commit● Ato de submeter as alterações feitas na CT para o repositório
- Branch● Conjunto de arquivos separados do mainstream do projeto para
ser trabalhado separadamente.
- Trunk● Linha principal de trabalho do projeto
Quando utilizar sistema centralizado?
- Desenvolvimento local- Equipe pouco numerosa- Projetos de pequeno e médio porte- Necessidade de maior controle da codificação
Quando utilizar sistema distribuído?
- Desenvolvimento distribuído- Equipe muito numerosa- Projetos de grande porte- Necessidade de dividir a equipe em sub-equipes
Dúvidas?
Sugestões?
Elogios?