Controle de Versão com Mercurial Paulo Mattos Olympya Software Controle de Versão • Alguém já sobrescreveu o código de outra pessoa e perdeu as alterações? • Não sabe quais, quem e quando foram efetuadas alterações em um programa? • Tem dificuldade em recuperar o código de uma versão anterior? • Tem problemas em manter variações do sistema ao mesmo tempo? Se teve um sim você necessita urgentemente de um sistema de controle de versão! …controle de versão evita isso 😇 Centralizado ou Distribuido? • • Controle de versão centralizado • um único repositório e várias cópias de trabalho • comunicação apenas através do repositório central Controle de versão distribuído (DVCS) • cada desenvolvedor possui um repositório próprio • • é acoplado a uma área de trabalho comunicação flexível entre repositórios “This is possibly the biggest advance in software development technology in 10 years… I’d rather go back to C++ before I gave up on Mercurial.” Joel Spolsky Fog Creek Software Filosofia do Mercurial • • • Linha de comando do Mercurial é: • estável • elegante • rica em recursos Simplicidade resulta em: • documentação clara & objetiva • é fácil encontrar o que você estiver procurando • hg help" Histórico do projeto é permanente & imutável Cópia de Trabalho • Cada desenvolvedor possui clone completo do repositório • Arquivos são editados na cópia de trabalho (working directory) • Conteúdo da cópia de trabalho é baseada em determinada revisão do repositório (ex, #4) Comandos Básicos • commit & update servem para salvar e recuperar modificação entre repositório local e cópia de trabalho • push & pull são usados para comunicação entre repositórios Outros comandos Mercurial vs Subversion criando seu 1º repositório via hg init… ..compartilhe repositório com hg serve 1 repositórios da equipe (inicialmente vazios) 2 Joel realiza dois commits… 3 …enviados para repositório central via hg push! 1 modificações concorrentes… 2 …merge será necessário! 3 merge resulta em novo commit …combinando tudo isso 😧 Tutorial completo do Mercurial • Explore esses comandos e outros em: www.hginit.com • Por quê Mercurial é melhor que Git? Questões em aberto… 1. Onde devo hospedar meu repositório central? • segurança & backups são mandatórios! • acesso remoto é vital para times distribuídos geograficamente 2. Commits não deveriam ser integrados com software de gestão de projeto? • visibilidade para gerente de projeto 3. Código modificado — via commits — não deveria ser submetidos a revisões por demais membros da equipe? • técnica complementar para detecção de bugs ainda em desenvolvimento Solução: Kiln! • Desenvolvido pela Fog Creek Software • Hospedagem dedicada de repositórios Mercurial (1: 👍) • interface simples porém poderosa • controle de acesso por usuário e/ou grupo • Excelente integração com FogBugz (2: 👍) • Inclui sistema completo de code review (3: 👍) • • permite fácil revisão das modificações feitas pelo time Bônus: suporte simultâneo para repositórios Mercurial e Git • única ferramenta disponível com esta capacidade Kiln: Experimente… • É gratuito por 30 dias • Começe seu trial aqui Dúvidas? [email protected]