terça-feira, 29 de julho de 2008

Mercurial



O mercurial é realmente ótimo. Como desenvolvemos para windows, estamos usando o TortoiseHG para como interface do Mercurial. Segue um screenshot de uma das telas do TortoiseHG.

Explicando melhor, cada bolinha é um commit. Todas as sequencias são locais, as uniões entre os caminhos marcam os pontos em que os fontes foram unidos e equalizados, apontando quem fez as uniões e quais foram os arquivos unidos. Uma coisa muito interessante é a representação do ponto em comum. No exemplo da imagem, houve um ponto em comun onde duas pessoas começaram desenvolvimentos diferentes e como tudo foi unido um pouco mas adiante.

Não consigo ver uma maneira mais fácil de rastrear as mudançãs que essa. Depois de alguns anos trabalhando e administrando repositórios CVSs e apanhar de suas limitações e dificuldades de traking de informações, branching work e etc, acho que estou usando uma das melhores ferramentas para controle de versão, o Mercurial (HG).

terça-feira, 22 de julho de 2008

Sistema de Controle de Versão (Mercurial)


Todos já ouviram falar do CVS, sistema de controle de versão. Tenho tido alguns problemas com ele ultimamente em um projeto com vários desenvolvedores trabalhando pararelo. O processo de merge e tracking das alterações é um bocado complicado. Tentando acabar com esses problemas fiz um estudo com algumas opções e no final das contas estamos usando o Mercurial.

Olhamos o GIT, Mercurial(HG) e Subversion. O git é ótimo mas o modelo que é usado para armazenar o histórico pode corromper e precisa ser reindexado periodicamente. O subversion é muito bom, mas ainda não chega aos pés do tracking 
de alterações suportadas pelo GIT e o Mercurial.

Iniciamos a utilização em um projeto que já estava no CVS, conseguimos importar o histórico para o Mercurial sem muito problemas, precisamos de um linux para isso, uma vez que precisamos do PCVS. O Mercurial só aceita conexão segura para commit dos dados no repositório central e traz o conceito de Sistema de Controle de Versão Distribuído, que é outro assunto. Basicamente o commit é feito local e unido com os outros commits através de siscronismo, um pouco complicado no início, mas depois que pega o jeito fica fácil.

Há distribuições para quase todas as plataformas, no ambiente que montamos usamos o TortoiseHG, bem windows like. 

Quem estiver pensando em trocar seu atual sistema de controle de versão vale a pena dar uma olhada. Qualquer dúvida, estamos aqui.