Pregunta

Supongamos que los archivos de mío y tuyo son descendientes de los viejos.

FILE_MINE =

abc
def
ghi

FILE_OLD =

abc
jkl
ghi

FILE_YOURS =

abc
def
ghi

diff3 -m MIND OLD YOURS Comando da:

abc
<<<<<<< OLD
jkl
=======
def
>>>>>>> YOURS
ghi

diff3 no puede resolver esa mina y los suyos hicieron cambios idénticos.

¿Por qué? Y, ¿hay una manera de resolver este problema?

Tickle su cerebro con esto:

diff OLD MIND y diff OLD YOURS tienen trozos idénticos en su salida.

2c2
< jkl
---
> def

Si estos trozos no "cancelar-out" durante la fusión de tres vías?

¿Fue útil?

Solución

¿Qué esperan tener?

A medida que el href="http://www.gnu.org/software/diffutils/manual/html_node/diff3-Merging.html#diff3-Merging" artículo describir diff3 utilidad dice:

  

Esta ... (fusión) deja de ser cierto cuando los tres archivos de entrada difieren o cuando sólo se diferencia de edad avanzada ; llamamos a esto un conflicto . Cuando los tres archivos de entrada diferentes, que llamamos el conflicto solapamiento

Por lo tanto, el caso que has descrito es tratado como un conflicto. '¿Porque?' usted puede preguntar. Debido a que el algoritmo diff3. Descripción se pueden encontrar en la misma página:

  

Se puede pensar en esto (la fusión) que restar mayor de el suyo y añadiendo el resultado a la mina , o como la fusión en mina de la Los cambios que se volvería más antigua en el suyo

No puede resolver adecuadamente las diferencias, ya que no tiene un contexto adecuado de que se realicen cambios.

Estoy de acuerdo con usted si usted va a decir que se debe trabajar utilizando algún otro método. Pero es lo que es. diff3 no es perfecto, yo recomendaría el uso de otras herramientas si quieres hacerlo bien, como se describe en el artículo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top