Domanda

Si supponga che i file di mio e tuo sono i discendenti di OLD.

FILE_MINE =

abc
def
ghi

FILE_OLD =

abc
jkl
ghi

FILE_YOURS =

abc
def
ghi

Comando diff3 -m MIND OLD YOURS dà:

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

diff3 non può risolvere che mio e tuo apportate modifiche identiche.

Perché? E, c'è un modo per risolvere questo problema?

Tickle il tuo cervello con questo:

diff OLD MIND e diff OLD YOURS hanno grossi pezzi identici nella loro produzione.

2c2
< jkl
---
> def

Qualora questi fusti non "cancella-out" durante la tre vie unione?

È stato utile?

Soluzione

Che cosa si aspetta di avere?

articolo che descrive diff3 utilità dice:

  

... Questo (la fusione) non riesce ad essere vero quando tutte e tre le file di input differiscono o quando differisce solo anziani ; chiamiamo questo un conflitto . Quando tutti e tre i file di input diversi, che noi chiamiamo un conflitto sovrapposizione

Pertanto, il caso che hai descritto è trattata come un conflitto. 'Perchè così?' si potrebbe chiedere. A causa dell'algoritmo diff3. Descrizione si possono trovare presso la stessa pagina:

  

Si può pensare a questo (la fusione) come sottraendo anziani da tuo e aggiungendo il risultato al mine , o come la fusione in miniera cambiamenti che girare più anziani in yours

Non si può risolvere le differenze correttamente perché esso non dispone di un adeguato contesto dei cambiamenti in corso.

Sono d'accordo con te, se hai intenzione di dire che dovrebbe funzionare utilizzando qualche altro approccio. Ma ... è quello che è. diff3 non è perfetto, mi consiglia di utilizzare altri strumenti, se si vuole farlo bene, come descritto nella articolo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top