Трехстороннее объединение файлов (вне контроля версий)
У меня есть три версии файла: оригинал, мои изменения и чужие изменения. Я хотел бы выполнить трехстороннее слияние, чтобы получить версию, включающую оба набора изменений (или потерпеть неудачу, если это невозможно). Обратите внимание, что я не спрашиваю ни о какой системе контроля версий, такой как svn или git. Я хотел бы написать минимальный инструмент командной строки, который принимает три файла в качестве входных данных и записывает слияние в стандартный вывод.
Один из способов заключается в следующем: использование инструментов Unix diff и patch. Предполагая, что три файла называются orig, my, other:
% diff -u orig my | патч -о - другое
или делать это наоборот,
% diff -u orig прочее | патч -о моё
Но тот факт, что есть два способа сделать различие и объединить, является чем-то вроде запаха кода. Конечно, инструмент слияния, который принимает все три файла в качестве входных данных, мог бы работать лучше.
Очевидно, я мог бы инициализировать пустой репозиторий SVN, проверить в Ori, проверить мои и другие в отдельных ветках, а затем выполнить слияние. Или аналогичная операция в другой системе контроля версий. Но это кажется тяжеловесным и неуклюжим, создавая хранилище, которое будет немедленно выброшено.
Существует ли разумный трехсторонний инструмент слияния, который запускается автономно из командной строки?
1 ответ
Как сказал Твальберг в комментарии, merge
это инструмент, который я искал.