Sistemas de controle de versão ● Visão geral ● Quando E o que? O que são sistemas de controle de versão? ● VCS: Version Control System ● SCM: Software Configuration Management ● Revision Control Quando e porque utilizar? ● Controle do código ● Acompanhamento do projeto ● Melhorar gerenciamento das equipes ● Forks e merges ● Branches/Tags/Trunk... VCS e o processo de software ● Influências profundas no processo ● Organização da equipe ● Descoberta e correção de bugs ● Divisão de tarefas ● Acompanhamento e métrica ● Extração de dados ● Encontrar deficiências ● Melhoriar o processo Tipos de sistemas de controle de versão ● Centralizados ● Distribuídos ● Embarcados VCS Centralizado VCS Distribuído Softwares disponíveis no mercado ● CVS ● Subversion ● Mercurial ● Bazaar ● Git ● Darcs ● Monotone Serviços disponíveis ● Github ● Gitorious ● Google Code ● Launchpad ● Sourceforge ● BitBucket ● CodePlex A influência do desenvolvimento distribuído ● Software global ● Software livre? ● The Cathedral and the Bazaar - Eric S. Raymond ● Linus' Law ● ● "Given a large enough beta-tester and codeveloper base, almost every problem will be characterized quickly and the fix will be obvious to someone." Robert Glass diz: ”Falácia, sem base estatística” Ambientes de desenvolvimento e VCS ● VCS como parte de uma IDE ● Eclipse ● Mercurial ● Git ● Subversion ● Bazaar Operações comuns ● Criar repositório ● Copiar projeto ● Buscar modificações ● Enviar modificações ● Comparar diferentes versões ou revisões ● Número de revisão? ● Obter o histórico de modificações ● Executar merges Forks e merges E o meu projeto? ● No code yet :-( ● Outros projetos ● Trabalho de compiladores ● Aplicação de monitoramento de tráfego Trabalho de compiladores ● Monitoramento de tráfego Visualização ”orgânica” do projeto ● Softwares ● Gource ● ● CodeSwarm ● ● Foco no estado da estrutura arquivos/diretórios Foco na quantidade de contribuições Exemplos? Visualização: primeiro commit commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Author: Linus Torvalds <[email protected]> Date: Sat Apr 16 15:20:36 2005 -0700 Linux-2.6.12-rc2 Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!