Use vimdiff
se gostar de vim
. Caso contrário, diffuse
também funciona bem.
Eu recentemente atualizei do Ubuntu 12.04 para o 12.10 e em um ponto, ele encontrou um conflito no arquivo de configuração do Apache em apache2.conf
. Eu não me dei uma opção de mesclagem naquele momento, então apenas rejeitei o novo arquivo e o instalador salvou o novo arquivo como apache2.conf.dpkg-dist
.
Eu posso diferenciar os dois arquivos com diff apache2.conf apache2.conf.dpkg-dist
e obter apenas as linhas que são diferentes. Mas eu quero mesclar manualmente os dois tipos de como resolver conflitos de mesclagem no SVN ou git. Como posso fazer isso?
O controle de versão tem mais informações disponíveis quando resolve conflitos: ele não tem apenas sua versão e a versão do outro cara, mas também o ancestral comum, e assim ele pode fazer uma mesclagem de três vias . Aqui, o ancestral comum é a versão original do arquivo de configuração na distribuição ou a versão oficial que você mesclou pela última vez com suas alterações.
Infelizmente, nem o Ubuntu nem qualquer outra distribuição importante que conheço faz com que seja completamente perfeito fazer mesclagens de três vias quando um arquivo de configuração é atualizado. Você pode chegar perto, no entanto, com o etckeeper . Etckeeper é um add-on para o APT, a ferramenta de gerenciamento de pacotes usada pelo Debian e derivados, que gerencia/etc
em uma versão sistema de controle (Bazaar, Darcs, Git, Mercurial); Ele foi portado para outros sistemas, incluindo o Yum no Fedora. Eu recomendo usar o etckeeper; Também é uma ótima maneira de acompanhar as alterações que você faz em /etc
.
Alguns programas gerenciam seus arquivos de configuração com ucf , mas isso não é algo que você tenha controle como usuário.
Mais geralmente, quando você tem o ancestral e duas versões, você pode fazer uma mesclagem de três vias com o merge
utilitário enviado com o RCS ou com diff3 -m
de diffutils .
Existem também muitos programas interativos de diff e merge. O Emacs e o Vim têm interfaces para isso, assim como a maioria dos diff viewers .
Meu favorito pessoal é kdiff3
- não sei se existe uma versão do Ubuntu para ele. De acordo com a página , ela apenas usa qt .
Com essa ferramenta, você pode mesclar dois (ou três) arquivos em um novo. Escolhendo um lado para cada diferença ou resolvendo manualmente o conflito.