GNU Diff3 (трехстороннее объединение) дает неожиданный результат

StackOverflow https://stackoverflow.com/questions/3931490

  •  30-09-2019
  •  | 
  •  

Вопрос

Предположим, что файлы мои и ваши потомки старого.

File_mine =

ABC Def Ghi.

File_old =

ABC JKL GHI.

File_yours =

ABC Def Ghi.

Команда diff3 -m MIND OLD YOURS дает:

ABC <<<<<<< Старый JKL ======= DEF >>>>>>> ваш GHI

Diff3 не может решить эту мою, а ваша сделала идентичные изменения.

Почему? И есть ли способ решить эту проблему?

Щекотать твой мозг с этим:

diff OLD MIND а также diff OLD YOURS иметь одинаковые блюда на их выходе.

2C2 <JKL ---> Def

Должны ли эти гулять не «отменить» во время трехстороннего слива?

Это было полезно?

Решение

Что вы ожидали иметь?

Как то Статья, описывающая утилиту Diff3 говорит:

... это (слияние) не может быть правдой Когда все три входных файла отличаются или Когда только старше отличается; мы называем это конфликт. Отказ Когда все три входных файла отличаются, мы называем конфликт перекрывать

Поэтому описанный вами случай относится к конфликту. 'Почему так?' Вы можете спросить. Из-за дифференциала алгоритма. Описание Вы можете найти на той же странице:

Вы можете думать об этом (слияние) как вычитание старшая от ваша и добавление результата к мой, или как слияние в мои изменения изменения, которые станут старше в ваш

Он не может неправильно разрешить различия, потому что он не имеет правильного контекста внесения изменений.

Я бы согласился с вами, если вы собираетесь сказать, что он должен работать с использованием другого подхода. Но что есть, то есть. diff3 не идеален, я бы порекомендовал использовать другие инструменты, если вы хотите сделать это правильно, как описано в статья

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top