Как правильно отредактировать файл diff / patch?Есть ли редакторы патч-файлов? - PullRequest
28 голосов
/ 20 сентября 2011

Сценарий: у меня есть файл патча, который корректно применяется к моим рабочим файлам, но я не хочу все изменения из патча.

Обычно я делаю vim example.patch, удаляю нежелательные изменения, и они применяются patch -p0 -i example.patch, но иногда исправление применяется некорректно, и мне приходится начинать заново.

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

Ответы [ 4 ]

16 голосов
/ 16 марта 2012

Если вы откроете файл diff в emacs и переведете редактор в режим «diff», вы на самом деле сможете редактировать патчи, и он будет корректно обновлять маркеры блоков. У меня действительно хорошо работает!

9 голосов
/ 23 декабря 2015

Если вы ищете неинтерактивное решение, rediff из patchutils поможет.

Вот его man описание:

Вы можете использовать rediff для исправления отредактированного вручную унифицированного дифференциала. Возьми копию различий, которые вы хотите отредактировать, и отредактируйте их без изменения смещений или считает (строки, начинающиеся с «@@»). Затем запустите Rediff, говоря это имя исходного файла различий и имя того, который у вас есть отредактированный, и он выведет отредактированный файл diff, но с исправленными смещения и отсчеты.

Небольшой скрипт, editdiff, предназначен для редактирования файла сравнения на месте.

Типы изменений, которые в настоящее время обрабатываются:

  • Изменение текста любой строки содержимого файла (конечно).
  • Добавление новых строк или удалений.
  • Добавление, изменение или удаление строк контекста. Линии на контекстном горизонте обрабатываются путем корректировки смещения и / или количества.
  • Добавление одного блока (@@ - префиксный раздел).
  • Удаление нескольких блоков (@@ - префиксные разделы).

Исходя из его описания, recountdiff также может быть потенциальным кандидатом для исправления унифицированных различий.

2 голосов
/ 05 ноября 2012

Какой СКМ вы используете?при использовании Git вы можете:

  • Перед созданием фактического патча используйте git add -p, чтобы добавить только части ваших изменений.Хорошей практикой является генерация коммитов меньшего размера только с соответствующими изменениями (однако некоторым организациям это не нравится и допускается только мегаммит).

  • Если у вас уже есть патч, примените его, затемиспользуйте git add -p, чтобы добавить части кода, которые вы хотите сохранить в своем индексе.Вы можете зафиксировать и выбросить остальные (git co .) или спрятать их (git stash).

edit (на основе комментария git add -p)

  • git add -p позволяет вам разделить кусок на более мелкие части, используя опцию s, в случаях, когда вам нужно больше подробностей, вам нужно использовать опцию e для редактирования, которая приведет вас к вашему редактору gitconfig, и он будет иметьинструкции о том, как редактировать ломоть.
1 голос
/ 28 сентября 2011

Не редактируйте файлы патчей вручную. В вашем случае, вы можете попробовать какой-нибудь интерактивный инструмент для применения вашего патча, например, ipatch

...