Subversion 1.5.0 e o Rastreamento de Mesclagens


A versão 1.5.0 do Subversion foi lançada no dia 19 de junho. A característica mais importante desta nova versão é o rastreamento automático da operação de merge: o Subversion agora anota (na propriedade svn:mergeinfo) as revisões e caminhos utilizados. Como resultado, o uso de ramificações no projeto fica mais fácil e menos sujeito a erros.

Um dos problemas que se evita é o uso repetido do mesmo merge várias vezes. Por exemplo, imagine que o merge da revisão 100 feita sobre o trunk execute a remoção de um arquivo doc/instrucoes.html e a alteração das linhas 10 e 20 do arquivo source/calc.py. O problema acontece quando você não lembra que já fez o merge dessa revisão (pois não registrou isso na mensagem de log) e depois de um tempo, aplica o mesmo merge de novo.

Se o mesmo merge for usado novamente sobre o trunk, ele tentará remover um arquivo doc/instrucoes.html e alterar novamente as linhas 10 e 20 do arquivo source/calc.py. Entretanto, o arquivo doc/instrucoes.html já não existe mais e o arquivo source/calc.py já havia sido alterado nessas linhas. Na melhor das hipóteses, o resultado é uma série de “skipped missing target” e conflitos. No pior caso, o problema não é detectado e o resultado final é um bicho que sempre me lembra a propaganda da coca-cola mostrada no vídeo abaixo.

A partir da versão 1.5.0, esse problema não aconteceria pois ao tentar realizar o merge, o Subversion detecta que o intervalo já foi usado e não o usa novamente.

Limitações do Merge Tracking

É importante saber que a implementação do rastreamento de merge da versão 1.5.0 não está completa; ainda faltam algumas partes da especificação original que serão implementadas nas próximas versões. Além disso, também há alguns problemas já conhecidos e relatados pendentes de solução. Isto significa que existem alguns casos que a funcionalidade atual não cobre e precisam ser resolvidos manualmente.

Pela lei de Murphy, justamente o caso que você vai precisar, não está coberto ainda pelo Subversion. Pelas experimentações que fizemos aqui na Pronus, situações que envolvem renomeações de arquivos ou diretório é um dos casos não cobertos pelo Subversion 1.5.0.

Considerações Finais

Esta versão do Subversion se mostrou um pouco frustrante, pois esperávamos que este problema de rastreamento de merge tivesse sido totalmente resolvido, mas ainda falta muita coisa a ser feita. Resta aguardar para que a funcionalidade completa seja implementada na próxima versão.

Information and Links

Join the fray by commenting, tracking what others have to say, or linking to it from your blog.


Other Posts

Write a Comment

Take a moment to comment and tell us what you think. Some basic HTML is allowed for formatting.

Reader Comments

Be the first to leave a comment!