Поскольку я пока застрял с инструментами Subversion и оболочки, git-gui
и тому подобное не может быть и речи. Существуют ли какие-либо инструменты оболочки для интерактивного применения патча построчно?
Применение патча построчно
Ответы (3)
Попробуйте передать параметр --dry-run
в patch
. Это позволит вам идентифицировать проблемные фрагменты и отредактировать патч и/или исправляемый файл соответствующим образом.
sdiff
подходит для слияния двух файлов. Это не очень поможет, когда у вас есть патч для интерактивного применения. Что ж, для этого достаточно просто использовать patch
с опцией --dry-mode
, чтобы найти недопустимые фрагменты и отредактировать.
- person tonio; 09.02.2011
--dry-run
- person Hasturkun; 09.02.2011
sdiff file1 file2 -o outfile
будет различать файл1 и файл2 и интерактивно показывать каждое изменение, и вы выбираете, какой из них вы хотите перейти в исходный файл. sdiff
лучший.
- person pvinis; 30.04.2012
ipatch предоставляет возможности и удобство выбора и редактирования исправлений в Darcs для тех, кто не использует Система контроля версий Darcs.
Это позволяет пользователю в интерактивном режиме разделить файл исправления на несколько файлов исправления, а также применить исправление в интерактивном режиме и, возможно, частично.
Введение от автора здесь а>.
Хотя это и не интерактивный вариант, можно вручную отредактировать файл
.diff
и удалить все ненужные изменения.Если вы откроете diff-файл в emacs и поместите редактор в
diff-mode
, вы сможете редактировать патчи, и emacs попытается обновить маркеры фрагментов. (Emacs автоматически откроет.diff
файлов вdiff-mode
.)Чтобы обновить маркеры вручную после внесения изменений, выполните
C-c C-w
для регенерации кусок.Чтобы применить ханки один за другим, выполните
C-c C-a
. Для обратного применения выполнитеC-u C-c C-a
. Вы также можетеM-x diff-tell-file-name
применить их к другому файлу.Я обнаружил, что
patch original patch.diff
более надежен, чемpatch < patch.diff
, а файлы исправлений, созданные с помощьюdiff -u
, с ними легче работать.Информация также задокументирована здесь.
ОБНОВЛЕНИЕ [5.21.21]:
C-c C-s
позволяет разделять фрагменты, что очень удобно при редактировании вручную. ИногдаC-c C-w
(diff-ignore-whitespace-hunk
) не делает то, что вы намеревались, так что безопаснее всего будет разделить ханки и позволить emacs автоматически обновлять заголовки. Это особенно полезно, когда строки остаются неизменными; просто разделите на кусок и удалите, чтобы удалить изменение.