Трехстороннее объединение файлов (вне контроля версий)

У меня есть три версии файла: оригинал, мои изменения и чужие изменения. Я хотел бы выполнить трехстороннее слияние, чтобы получить версию, включающую оба набора изменений (или потерпеть неудачу, если это невозможно). Обратите внимание, что я не спрашиваю ни о какой системе контроля версий, такой как svn или git. Я хотел бы написать минимальный инструмент командной строки, который принимает три файла в качестве входных данных и записывает слияние в стандартный вывод.

Один из способов заключается в следующем: использование инструментов Unix diff и patch. Предполагая, что три файла называются orig, my, other:

% diff -u orig my | патч -о - другое

или делать это наоборот,

% diff -u orig прочее | патч -о моё

Но тот факт, что есть два способа сделать различие и объединить, является чем-то вроде запаха кода. Конечно, инструмент слияния, который принимает все три файла в качестве входных данных, мог бы работать лучше.

Очевидно, я мог бы инициализировать пустой репозиторий SVN, проверить в Ori, проверить мои и другие в отдельных ветках, а затем выполнить слияние. Или аналогичная операция в другой системе контроля версий. Но это кажется тяжеловесным и неуклюжим, создавая хранилище, которое будет немедленно выброшено.

Существует ли разумный трехсторонний инструмент слияния, который запускается автономно из командной строки?

1 ответ

Решение

Как сказал Твальберг в комментарии, merge это инструмент, который я искал.

Другие вопросы по тегам