Como faço para "mesclar" dois arquivos de texto?

13

Atualizei recentemente do Ubuntu 12.04 para 12.10 e, a certa altura, ele encontrou um conflito no arquivo de configuração do Apache apache2.conf. Como não havia uma opção de mesclagem nesse ponto, apenas rejeitei o novo arquivo e o instalador salvou o novo arquivo como apache2.conf.dpkg-dist.

Posso diferenciar os dois arquivos diff apache2.conf apache2.conf.dpkg-diste obter apenas as linhas que são diferentes. Mas quero mesclar manualmente os dois, como resolver conflitos de mesclagem no SVN ou no git. Como eu posso fazer isso?

Steven
fonte
Sem um analisador adequado, você só pode fundi-los manualmente
daisy

Respostas:

2

O controle de versão tem mais informações disponíveis quando ele resolve conflitos: ele possui não apenas sua versão e a versão do outro cara, mas também o ancestral comum e, portanto, pode fazer uma fusão 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, torna completamente fácil a fusão de três vias quando um arquivo de configuração é atualizado. Você pode chegar perto, no entanto, com o etckeeper . Etckeeper é um complemento para o APT, a ferramenta de gerenciamento de pacotes usada pelo Debian e derivados, que gerencia /etcem um sistema de controle de versão (Bazaar, Darcs, Git, Mercurial); 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 feitas /etc.

Alguns programas gerenciam seus arquivos de configuração com o ucf , mas isso não é algo que você controla como usuário.

De modo mais geral, quando você tem o ancestral e duas versões, você pode fazer uma fusão de três vias com o mergeutilitário fornecido com RCS ou com diff3 -mde diffutils .

Existem também muitos programas interativos de diferenças e mesclagem. O Emacs e o Vim têm interfaces para isso, assim como a maioria dos visualizadores .

Gilles 'SO- parar de ser mau'
fonte
1

Meu favorito pessoal é kdiff3- eu não sei, se existe uma versão do Ubuntu para ele. De acordo com a página inicial , 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.

Nils
fonte
atualmente (15.04) o ubuntu tem ambos kdiff3ekdiff3-qt
mchid 12/06