¿Cómo “combino” dos archivos de texto?

13

Recientemente actualicé Ubuntu 12.04 a 12.10 y en un momento, encontré un conflicto en el archivo de configuración de Apache apache2.conf. No me dio una opción de fusión en ese momento, así que simplemente rechacé el nuevo archivo y el instalador guardó el nuevo archivo como apache2.conf.dpkg-dist.

Puedo diferenciar los dos archivos diff apache2.conf apache2.conf.dpkg-disty obtener solo las líneas que son diferentes. Pero quiero fusionar manualmente los dos tipos de cómo resuelvo conflictos de fusión en SVN o git. ¿Cómo puedo hacer eso?

Steven
fuente
Sin un analizador adecuado, solo puede fusionarlos manualmente
daisy

Respuestas:

7

Úselo vimdiffsi lo desea vim. De lo contrario, diffusefunciona muy bien también.

dset0x
fuente
2

El control de versiones tiene más información disponible cuando resuelve conflictos: no solo tiene su versión y la versión del otro tipo, sino también el antepasado común, y por lo tanto puede hacer una fusión tripartita . Aquí, el ancestro común es la versión original del archivo de configuración en la distribución, o la versión oficial que fusionó por última vez con sus cambios.

Desafortunadamente, ni Ubuntu ni ninguna otra distribución importante que conozca hace que sea completamente sencillo hacer fusiones tripartitas cuando se actualiza un archivo de configuración. Sin embargo, puedes acercarte con etckeeper . Etckeeper es un complemento para APT, la herramienta de gestión de paquetes utilizada por Debian y derivados, que gestiona /etcen un sistema de control de versiones (Bazaar, Darcs, Git, Mercurial); se ha portado a otros sistemas, incluido Yum en Fedora. Recomiendo usar etckeeper; También es una excelente manera de realizar un seguimiento de los cambios que realiza /etc.

Algunos programas administran sus archivos de configuración con ucf , pero eso no es algo de lo que tenga control como usuario.

De manera más general, cuando se tiene el antepasado y dos versiones, se puede hacer una fusión a tres bandas con la mergeutilidad entregada con RCS o diff3 -mde diffutils .

También hay una gran cantidad de programas interactivos de diferencias y fusión. Emacs y Vim tienen interfaces para eso, al igual que la mayoría de los visores diff .

Gilles 'SO- deja de ser malvado'
fuente
1

Mi favorito personal es kdiff3: no sé si hay una versión de Ubuntu para ello. De acuerdo con la página de inicio , solo usa qt .

Con esa herramienta puedes combinar dos (o tres) archivos en uno nuevo. Ya sea eligiendo un lado para cada diferencia o resolviendo manualmente el conflicto.

Nils
fuente
actualmente (15.04) ubuntu tiene ambos kdiff3ykdiff3-qt
mchid