22 de junho de 2009

Comparando e mesclando arquivos fonte

Para quem desenvolve software é muito comum a situação de ter que comparar duas versões de um mesmo fonte para saber quais as alterações que foram introduzidas. Quando se trabalha em equipe, então, a situação pode ser ainda pior já que mais de um desenvolvedor pode estar mexendo num mesmo fonte ao mesmo tempo. Depois que ambos terminam suas alterações, é necessário comparar as diferenças e quase sempre fazer um "merge" para que não se perca nenhuma das modificações.

Utilizamos na ABC71 o Visual Source Safe (VSS) da Microsoft para controle das versões dos fontes e o VSS possui recursos para comparar e mesclar o conteúdo de versões. Mas, como não é a função principal da ferramenta, acaba sendo trabalhoso realizar essas tarefas. Além disso, o VSS é bastante integrado a seu próprio banco de dados, tornando ainda mais trabalhoso comparar arquivos externos.

Há algum tempo venho usando uma ferramenta chamada WinMerge, mais apropriada para essas tarefas. Trata-se de um projeto Open Source desenvolvido em C++ cujo objetivo primário é visualizar as diferenças entre duas versões de um mesmo arquivo e, se desejar, mesclar o conteúdo de ambos, gerando uma terceira versão que contenha todas as alterações desejadas.

O WinMerge mostra cada versão do fonte num painel próprio, cada um dos fontes sincronizado no mesmo ponto, dando destaque às diferenças com cores diferentes. É possível navegar rapidamente entre cada alteração através de botões na barra de ferramentas ou usando teclas de atalho. É permitido jogar uma alteração específica de um fonte ao outro, sem qualquer restrição, isto é, nenhum dos fontes é privilegiado: posso lançar uma alteração da versão A de um fonte para sua versão B e a alteração seguinte lançar da B para a A ou optar por não fazer o lançamento. Obviamente, há uma opção para lançar todas as diferenças de uma vez de um fonte para outro. Entretanto, se você quiser garantir que uma das versões não sofra alterações por engano durante o processo de merge, pode usar o recurso de manter um dos fontes como read-only.

A imagem abaixo mostra a tela principal do WinMerge:
Veja na reprodução que há um painel à esquerda mostrando a distribuição das diferenças ao longo dos fontes e que uma seta aponta no painel o ponto exato que está sendo exibido dos fontes.

A imagem mostra também um outro recurso: os fontes são exibidos com syntax highlighting. Como o WinMerge também é um editor de texto, permitindo introduzir novas alterações junto com o merge, acaba sendo bem prática a edição. A imagem não mostra mas também há um painel na parte de baixo da tela que exibe as linhas do ponto atual que está diferente nos dois fontes.

Mais: o WinMerge pode gerar um lista com os arquivos que estão diferentes numa comparação entre duas pastas, incluindo as subpastas, se quiser. Um duplo clique em um arquivo e a tela exibindo visualmente as diferenças é apresentada.

Para terminar, o WinMerge interage com o Windows Explorer de forma que você pode disparar uma comparação simplesmente selecionando um ou dois arquivos (ou pastas) a partir do próprio Explorer.

Mais Informações
Winmerge.org

Nenhum comentário :

Postar um comentário

OBS: Os comentários enviados a este Blog são submetidos a moderação. Por isso, eles serão publicados somente após aprovação.

Observação: somente um membro deste blog pode postar um comentário.