Инструмент diff и patch

Я пытаюсь сгенерировать патчи для группы файлов, которые я изменил. Я использую Meld, который отлично справляется с задачей диффузии файлов в хорошем визуальном стиле, а затем позволяет мне сохранять и генерировать файл патча на основе этих изменений.

Проблема в том, что я делаю это медленно. Есть ли подобный инструмент, который я могу использовать для пакетной работы? Я хочу, чтобы он рекурсивно проверял все файлы в двух каталогах и генерировал все файлы исправлений на основе полученных результатов.

2 ответа

Решение

Хотя я никогда не использовал Meld, у меня есть ощущение, что на самом деле он использует diff под обложками. Способ, которым я всегда генерировал файлы патчей, прост:

$ diff -ruN $ {dir1} $ {dir2}> $ {patchfile}.patch

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

Это то что diff для. patch принимает diff выходные файлы в качестве входных данных. Просто беги diff в цикле BASH для каждого из ваших файлов. Например, если исходные файлы находятся в dirA, а новые - в dirB (с теми же именами файлов), сделайте это (в./dirA):

for n in $(ls * | grep -v ".o$"); do \
    diff -uN $n dirB/$n > $n.patch; patch $n < $n.patch; \
done 
Другие вопросы по тегам