190 likes | 296 Views
Controle de Versão com SubVersion. Erick Sasse Cadena Sistemas. Erick Sasse. Desenvolvedor há uns 15 anos Ex-MSX (Expert DDPlus) Ex-clippeiro Ex-BBSeiro Delphi desde a primeira versão Aventuras em C# (VS.NET) Usuário PalmOS (inclinando para PocketPC) Aspirante a mergulhador
E N D
Controle de Versão com SubVersion Erick Sasse Cadena Sistemas
Erick Sasse • Desenvolvedor há uns 15 anos • Ex-MSX (Expert DDPlus) • Ex-clippeiro • Ex-BBSeiro • Delphi desde a primeira versão • Aventuras em C# (VS.NET) • Usuário PalmOS (inclinando para PocketPC) • Aspirante a mergulhador • Palestrante DDD, FDD, BorCon.
Por que usar controle de versão? • Registro histórico dos arquivos dos projetos ao longo do tempo. • Permite que desenvolvedores trabalhem juntos sem que um atrapalhe o outro. • Não é apenas para equipes de desenvolvedores. • Pode rodar localmente com muita eficiência. • Existem opções totalmente gratuitas (ex. SubVersion). • Segurança total na manipulação e alteração do código. • Loucura não usar, principalmente quando em mais de um desenvolvedor.
Benefícios • Backup automático do código fonte (quando usado em computador separado). • Recuperação fácil do estado anterior do código quando se faz algo que não ficou bom. • Compartilhamento de código totalmente suave e sem dores de cabeça. • Diferentes versões em paralelo (branches). • Consultar qualquer versão de um arquivo. • Você não precisa mais gritar pelo corredor para saber se alguém está usando o arquivo que você quer editar.
Mesmo assim... • Algumas pesquisas indicam que cerca de 70% dos desenvolvedores não utilizam nenhum tipo de controle de versão!!!!
Por que SubVersion? • Open Source • Roda nas principais plataformas (Windows, Linux) • Roda localmente • Sucessor natural do CVS • “Versionamento” de diretórios • Commits atômicos • Acesso via HTTP • http://subversion.tigris.org/
TortoiseSVN • Cliente gráfico do SubVersion para Windows • Integrado ao “shell” • Você praticamente só usará ele. • http://tortoisesvn.tigris.org/
Modelos de “Versionamento” • Lock-Modify-Unlock • Ou checkout-edit-checkin; • Falsa noção de segurança. • Mais problemas do que parece. • Desenvolvedores esquecem arquivos travados frequentemente. • Você só consegue alterar um arquivo se conseguir destravá-lo. • Dificulta uso off-line.
Modelos de “Versionamento” • Copy-Modify-Merge • Método usado pelo SubVersion. • Mais simples e prático. • Desenvolvedores podem trabalhar em paralelo no mesmo arquivo. • Muito menos problemático do que você pensa. • Todo desenvolvedor tem uma cópia de trabalho em sua máquina liberada para edição. • Tranqüilo para uso off-line.
Ciclo básico de trabalho • Atualiza sua cópia de trabalho com os arquivos do servidor • Realiza modificações na cópia local • Examina modificações • Salva suas modificações no servidor • Demo
Tags (ou labels) • Um dos recursos mais importantes do controle de versão. • Usadas para marcar um determinado momento do seu repositório com um nome com algum significado mais simbólico. • Demo
Quando usar tags • Use a vontade, não tem efeitos colaterais: • Quando você faz um release • Antes de fazer uma grande modificação • Quando você faz um build automatizado
Branches • Você usa branches quando precisa trabalhar em duas versões distintas de um projeto ao mesmo tempo. • Novas versões: Após o lançamento da versão 1.0 do seu aplicativo, você tem que iniciar o desenvolvimento da versão 2.0 e manter a 1.0. • Não tenha medo de usar. • Demo
Árvore padrão de projeto /projeto1 /trunk (sua linha atual de desenvolvimento) /braches /tags /projeto2 /trunk /braches /tags
Quais arquivos controlar? • Somente arquivos necessários para o build do aplicativo. • Não controle arquivos que são gerados automaticamente, como EXEs, DLLs, DCUs, etc. • Arquivos texto (código fonte, HTML, XML) são gerenciados graciosamente. • Arquivos binários devem ser controlados apenas em último caso, ou seja, quando não se tem os fontes que os geram. E ainda assim, somente se eles forem necessários para o build do nosso aplicativo.
Regras Básicas • Só “commitar” código compilável. • Quem quebrar o build tem que sofrer: • Fazer café toda manhã; • Depositar R$1 no jarro para o chopp da galera no final do projeto; • Realizar commits freqüentes, para evitar conflitos. • Execute o Diff sempre antes de cada commit para revisar suas alterações. • Descreva seus commits o máximo possível.
Referências • SubVersion (http://subversion.tigris.org) • TortoiseSVN (http://tortoisesvn.tigris.org) • SVN Book (http://svnbook.org/) • Source Control HOWTO (http://software.ericsink.com/scm/source_control.html) • Wush.net – Hospedagem SubVersion (http://www.wush.net/)
Obrigado! • erick.sasse@cadena.com.br • www.ericksasse.com.br