GNU diff3 (třícestný merge) poskytuje neočekávaný výsledek

hlasů
2

Předpokládáme, že soubory MINE a vy jsou potomci starých.

FILE_MINE =

abc
def
GHI

FILE_OLD =

abc
JKL
GHI

FILE_YOURS =

abc
def
GHI

Příkaz diff3 -m MIND OLD YOURSdá:

abc
<<<<<<< OLD
JKL
=======
def
>>>>>>> YOURS
GHI

diff3 nemůže vyřešit ten můj, tvůj vyrobeny identické změny.

Proč? A je tu způsob, jak vyřešit tento problém?

Polechtat váš mozek s tímto:

diff OLD MINDa diff OLD YOURSmají identické fešáci v jejich výkonu.

2C2
<JKL
---
> def

Pokud by se tito fešáci není „cancel-out“ v průběhu tří-way korespondence?

Položena 14/10/2010 v 09:46
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Co jste očekávat, že?

Vzhledem k tomu, článek, který popisuje diff3 nástroj říká:

... To (sloučení), nedokáže být pravda , když všechny tři vstupní soubory se liší, nebo když jen starší se liší ; říkáme tomu konflikt . Když jsou všechny tři vstupní soubory liší, říkáme konflikt překrytí

Proto v případě, že jste popsal je považován za konflikt. 'Proč?' Můžete se ptát. Vzhledem k algoritmu diff3. Popis najdete na stejné stránce:

Můžete myslet na to (sloučení) as odečtením starší z vy a přidáním výsledku do dolu , nebo jako splynutí dolu změny, které by zase starší do vy

To nemůže vyřešit rozdíly správně, protože nemá správný kontext změnit.

Souhlasím s vámi, pokud se chystáte říct, že by to mělo fungovat s použitím nějakého jiného přístupu. Ale ... to je to, co to je. diff3 není dokonalá, bych doporučil používat jiné nástroje, pokud chcete, aby to hned, jak je popsáno v článku

Odpovězeno 16/02/2011 v 15:42
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more