Mercurial
Mercurial: O merge deu errado e agora ?
0
Olá pessoal, olhando as estatísticas de acesso do meu blog vi que nas últimas semanas um número considerável de pessoas chegou aqui procurando por um comando hg unmerge. A questão é que não existe um comando básico do hg que desfaça um merge! Calma, nem tudo está perdido! Podemos resolver o problema, precisamos apenas analisar os cenários
O merge deu errado, mas não aconteceu um commit
Sempre que acontece um merge no mercurial é necessário o comando hg commit para persistir as alterações. Caso você tenha executado um merge e não tenha ainda realizado um commit é possível descartar as alterações através do comando hg revert, as duas maneiras básicas de usá-lo são:
hg revert nomedoarquivo
Usado quando desejamos reverter as alterações realizadas em arquivos específicos
hg revert –a
Usado quando desejamos reverter as alterações realizadas em todos os arquivos
O merge deu errado e um commit foi realizado
Neste caso precisamos reverter um commit, podemos realizar isso de diferentes maneiras, são elas:
hg backout –r numerorevisao
Reverte o efeito de um determinado changeset
hg rollback
Reverte os efeitos da última transação realizada no reposítorio
Espero que não seja necessário, mas temos essas maneiras de resolver merges com problemas, se você souber de mais alguma maneira pode deixar ai nos comentários. Até a próxima!
Links:
http://mercurial.selenic.com/wiki/Revert
http://mercurial.selenic.com/wiki/Backout
http://mercurial.selenic.com/wiki/Rollback
Minha experiência com Mercurial Hg
1
Olá pessoal, este post é sobre como está sendo adotar o Hg no trabalho e nos projetos pessoais.
Essa história começou mais ou menos a 1 ano quando conheci o Git. Durante muito tempo eu usei Team Foundation Server(Eu sei que é ALM, estou me referindo basicamente ao source control do TFS) para projetos privados e open source , não posso falar que sempre senti falta de um servidor de código fonte distribuído. Pra falar a verdade não sabia muito sobre esse modelo então basicamente o que me incomoda no TFS é a ferramenta de merge(eu sei que é plugável) e o custo da ferramenta. Quando conheci o GIT gostei muito da velocidade e qualidade do merge além do fato de ser free. Comecei a usar git nos projetos pessoais e logo após já estava tentando implantar o DVCS no trabalho. Nesse meio tempo não consegui justificar a ferramenta(não sabia o suficiente para isso) e alguns outros fatores políticos da empresa dificultaram a migração.
Implementação
No início de 2011 já com mais conhecimento sobre a ferramenta pressionei para implementarmos no trabalho e a galera topou testar a ferramenta. Fui responsável por configurar uma maquina e logo descobri que a integração com windows não era muito simples, e que na verdade a feramenta não foi projetada para esse sistema. Tínhamos a possibilidade de usar o GitHub mas o pessoal de Infra queria hospedar lá.. Nesse meio tempo rolou o Microsoft WebCamps e tive a oportunidade de conhecer a galera do devisland e lá mesmo colocamos uma aplicação no bitbucket e começamos a testar, o resultado foi excelente e na semana seguinte já estava testando com a equipe da ASKSoftware. A gerência concordou em usar o bitbucket e então tudo estava pronto!
O que foi preciso para começar
O primeiro passo foi criar a conta no bitbucket e instalar o tortoisehg, alguns instalaram plugins como o VisualHG e como referência usamos o HgInit.com e um dos livros que acompanha o tortoise: Mercurial The Definitive Guide
Adaptação da equipe
O background da galera .NET infelizmente envolve usar ferramenta visual. Esse requisito foi cumprido através do TortoiseHG e de plugins para VS. Começamos a usar a ferramenta, eu e Rodrigo Vidal ensinamos ao pessoal usando a linha de comando até pela simplicidade(e pelo fato de não sabermos usar a ferramenta tão bem). A partir desse momento o Hg já era a ferramenta padrão de controle de código fonte da equipe.
Não basta trocar a ferramenta, é preciso mudar a mentalidade
A equipe se adaptou rapidamente ao modelo de trabalho com DVCS pra quem conhece Hg isso significa: Commit, Pull, Update/Merge,Commit,Push. O pessoal começou a fazer integrações locais que envolvem rodar os testes e testar a aplicação basicamente, isso fez com que tivéssemos uma semana de trabalho sem quebrar o build. Ainda precisamos iniciar o uso de feature branches e aprender mais sobre Heads e changesets
Resultado positivos:
- Curva de aprendizado curta
- Código estável no repositório
- Custo baixo
- Integração “confortável” com windows
É isso pessoal, espero voltar em breve para falar sobre dicas e experiências com o Hg.