diff3 es una utilidad de Unix para comparar tres archivos y mostrar las diferencias entre ellos. diff3 también puede fusionar archivos, implementando una fusión de tres vías .
diff3
Apareció originalmente en la versión 7 de Unix de 1979. Una versión muy similar se encontró en Berkeley Software Distribution (BSD) y fue heredada en OpenBSD y probablemente en Solaris . [1] [2]
En la mayoría de los sistemas modernos similares a Unix, incluso los derivados de BSD como FreeBSD y NetBSD, el diff3 proporcionado es la versión de GNU en diffutils (anteriormente GNU Tools ). Esta versión tiene la capacidad de fusionar archivos por sí sola sin depender de ed
. Invoca internamente diff
a para hacer la comparación, pero también puede usar cualquier otra herramienta compatible. [3]
El comando está disponible como un paquete separado para Microsoft Windows como parte de la colección UnxUtils de puertos Win32 nativos de utilidades comunes tipo Unix de GNU. [4]
"Diff3" también se ha convertido en un nombre genérico para el algoritmo de fusión de tres vías, específicamente uno basado en la conciliación de dos diferencias diferentes derivadas de la primera fuente.
Cuando dos personas han realizado cambios en copias del mismo archivo, diff3 puede producir una salida fusionada que contiene ambos conjuntos de cambios junto con advertencias sobre conflictos. diff3 puede fusionar tres o más conjuntos de cambios en un archivo fusionando dos conjuntos de cambios a la vez.
diff3 puede incorporar cambios de dos versiones modificadas en una versión anterior común. Esto permite a los usuarios fusionar los conjuntos de cambios representados por los dos archivos más nuevos. Esto se puede habilitar mediante un comando como este: diff3 mine older yours
.
Esto es como restar el archivo older
del archivo yours
y agregar el resultado al archivo mine
, o como fusionar mine
los cambios que se convertirían older
en yours
. Esta fusión está bien definida siempre que mine
y older
coincidan en la vecindad de cada uno de esos cambios. Esto no es cierto cuando los tres archivos de entrada difieren o cuando solo older
difiere ; esto es un conflicto. Cuando los tres archivos de entrada difieren, el conflicto es una superposición.
diff3 tiene varios métodos para manejar superposiciones y conflictos. Puede omitir superposiciones o conflictos, o seleccionar solo superposiciones o marcar conflictos con líneas <<<<<<<
especiales >>>>>>>
.
diff3 puede generar los resultados de la fusión como un script ed que se puede aplicar al primer archivo para generar el resultado fusionado. Sin embargo, generar directamente el resultado fusionado evita algunos problemas con ed.