Controle de Versão de Software Luiz Jácome Júnior
Motivação Alguém já sobrescreveu o código de outra pessoa por acidente e acabou perdendo as alterações? Tem dificuldades em saber quais as alterações efetuadas em um programa, quando foram feitas e quem fez? Tem dificuldade em recuperar o código de uma versão anterior que está em produção? Tem problemas em manter variações do sistema ao mesmo tempo? 2
Vantagens Controle do histórico Trabalho em equipe Sincronização de mudanças Marcação de versões estáveis e de pontos de restauração Ramificação de projetos 3
Centralizado x Distribuído Centralizado Topologia estrela Repositório central Várias cópias de trabalho Comunicação através do repositório central Subversion (SVN) Distribuído Vários repositórios autônomos e independentes Um repositório para cada desenvolvedor A sincronização ocorre entre os diferentes repositórios Git, Mercurial e Bazaar 4
Centralizado 5
Distribuído 6
Centralizado x Distribuído 7
Subversion Sistema de controle de versão livre/open-source Gerencia arquivos e diretórios, e as modificações feitas neles ao longo do tempo Permite que você recupere versões antigas de seus dados, ou que examine o histórico de suas alterações Possibilitar o trabalho paralelo e concorrente de vários desenvolvedores sobre os mesmos arquivos, evitando que um sobrescreva o código de outro 8
Sincronização no SVN Copy-Modify-Merge (Copiar-Modificar-Fundir) 9
Sincronização no SVN 1. Duas cópias de trabalho são criadas a partir do comando checkout. As duas iniciam no mesmo estado. 10
Sincronização no SVN 2. Os dois desenvolvedores executam modificações nas suas cópias de trabalho, mas Aline publica antes no repositório. 11
Sincronização no SVN 3. Roberto tenta publicar suas alterações, mas o controle de versão recusa justificando que as alterações foram baseadas em arquivos desatualizados. No caso, um ou mais arquivos alterados por Roberto já haviam sido alterados por Aline antes. 12
Sincronização no SVN 4. Na atualização da cópia de trabalho, o controle de versão já mescla automaticamente as revisões. 13
Sincronização no SVN 5. Após conferir se a atualização e a mesclagem produziram o resultado desejado, Roberto envia as mudanças ao repositório. Enquanto isso, Aline já trabalha em outra tarefa, executando novas alterações. 14
Sincronização no SVN 6. O commit de Aline pode ser aceito sem problema se nenhuma das revisões que vieram depois da atualização da cópia de trabalho tiver alterado os mesmos arquivos que Aline. É uma situação possível de acontecer, mesmo que não seja comum. 15
Ciclo de Trabalho Atualizar sua cópia de trabalho Fazer alterações Verificar suas alterações Desfazer alterações Resolver conflitos Submeter 16
Linha de Desenvolvimento Trunk (projeto em desenvolvimento) Branch (linhas de desenvolvimento) Tag (release) 17
Ferramentas Linux: RapidSVN, kdesvn, SVNWorkbench Windows: TortoiseSVN, VisualSVN Eclipse Plugin Subclipse NetBeans Plugin Subversion 18
TRAC Controle de mudanças; Wiki para documentação colaborativa e referência cruzada entre os elementos do Trac; Integração com o Subversion (Trac também funciona como um browser do repositório do Subversion); Acompanhamento da evolução do projeto. 19
TRAC - Melhorias Melhoria na qualidade do produto e do processo de desenvolvimento; Registro, rastreamento e controle das mudanças sofridas pelo projeto durante o seu ciclo de vida; Integração entre o controle de versão e o controle de mudança; Acompanhamento básico da evolução do projeto; Melhor documentação do projeto através de participação da equipe de desenvolvimento. 20
TRAC - Plugin Plugin NetBeans: Cubeon Plugin Eclipse: Mylyn 21
LES TRAC: http://les.ufersa.edu.br/trac/ USVN: http://les.ufersa.edu.br/usvn/login/ 22
Referências Controle de Versão com Subversion: http://svnbook-pt-br.googlecode.com/svn/snapshots/1.4/index.h Conceitos Básicos de Controle de Versão de Software Centralizado e Distribuído: http://pronus.eng.br/artigos_tutoriais/gerencia_confi guracao/conceitos_basicos_controle_versao_centra lizado_e_distribuido.php?pagnum=4 23