Аннотированный файл diff с маркерами типа "<<<<<<< mine" и ">>>>>>> yours"
Я пытаюсь создать файл diff с помощью команды diff Linux, которая имеет такие маркеры (взято со страницы руководства diff3):
<<<<<<< mine
lines from mine
=======
lines from yours
>>>>>>> yours
Этот формат очень интуитивен для меня и позволяет мне легко исправлять конфликты слияния в vim, и он прекрасно работает, когда я пытаюсь объединить три файла (мой, ваш и оригинальный), используя diff3, но я бы хотел тот же формат из обычного diff. Я надеялся, что это будет просто, но я не смог получить это. Я пробовал большинство основных опций (-e, - ed и т. Д.) И даже пытался создать формат --changed-group, но безуспешно.
Надеюсь, это что-то простое, что я просто упустил из виду.
ОБНОВИТЬ:
Пример двух файловых различий с добавленной строкой, удаленной строкой и строкой конфликта:
1 ответ
Вы можете играть с опциями diff. Скрипт оболочки ниже
diff \
--unchanged-group-format='%=' \
--old-group-format='' \
--new-group-format='%>' \
--changed-group-format='<<<<<<< mine
%<=======
%>>>>>>>> yours
' \
orig.txt new.txt
Выходы
This has some stuff
in that gets
modified in
a later version
<<<<<<< mine
and there is a conflict
=======
and there is a conflict (like here)
>>>>>>> yours
about which version
should be used.
newline
Для файлов, как на вашем скриншоте. Вы можете посмотреть больше вариантов форматирования для diff в документации, например, здесь.
Один лайнер (работает из командной строки, хотя бы на linux):
diff --unchanged-group-format="%=" --old-group-format="" --new-group-format="%>" --changed-group-format="<<<<<<< mine%c'\\12'%<=======%c'\\12'%>>>>>>>> yours%c'\\12'" orig.txt new.txt