Question

Supposons que les fichiers et YOURS MINE sont les descendants de l'ancien.

FILE_MINE =

abc
def
ghi

FILE_OLD =

abc
jkl
ghi

FILE_YOURS =

abc
def
ghi

Commande diff3 -m MIND OLD YOURS donne:

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

diff3 ne peut pas résoudre ce MINE et YOURS a apporté des modifications identiques.

Pourquoi? Et, est-il possible de résoudre ce problème?

Tickle votre cerveau avec ceci:

diff OLD MIND et diff OLD YOURS ont Hunks identiques dans leur production.

2c2
< jkl
---
> def

Si ces Hunks pas « neutraliseront » lors de la fusion à trois voies?

Était-ce utile?

La solution

Qu'est-ce que vous vous attendez à avoir?

article décrivant diff3 utilitaire dit:

  

... Cette (fusion) ne parvient pas à être vrai lorsque les trois fichiers d'entrée diffèrent ou lorsque seulement plus varie ; nous appelons conflit . Lorsque les trois fichiers d'entrée diffèrent, que nous appelons un conflit chevauchement

Par conséquent, le cas que vous avez décrit est traité comme un conflit. «Pourquoi donc? vous pourriez demander. En raison de l'algorithme diff3. Description vous pouvez trouver à la même page:

  

Vous pouvez penser à cette (fusion) en soustrayant plus de le vôtre et en ajoutant le résultat à mien , ou la fusion dans le mien la Les changements qui tournerait plus dans le vôtre

Il ne peut pas résoudre les différences correctement parce qu'il ne dispose pas d'un contexte de changements apportés.

Je suis d'accord avec vous si vous allez dire que cela devrait fonctionner à l'aide d'une autre approche. Mais ... il est ce qu'il est. diff3 est pas parfait, je vous conseille d'utiliser d'autres outils si vous voulez le faire correctement, comme décrit dans le article

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top