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-dist
y 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?
Respuestas:
Úselo
vimdiff
si lo deseavim
. De lo contrario,diffuse
funciona muy bien también.fuente
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
/etc
en 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
merge
utilidad entregada con RCS odiff3 -m
de 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 .
fuente
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.
fuente
kdiff3
ykdiff3-qt