Apply patch line-by-line
Since I'm stuck with Subversion and shell tools 开发者_运维问答for the time, git-gui
and such are out of the question. Are there any shell tools to apply a patch line-by-line interactively?
Try passing the --dry-run
option to patch
. This will let you identify the problem hunks and edit the patch and/or file being patched appropriately.
ipatch brings the power and convenience of selecting and editing patches in Darcs to those who are not using the Darcs version control system.
It allows the user to interactively split a patch file into several patch file, as well as applying a patch interactively and possibly partially.
There's an introduction from the author here.
See this answer.
Although not interactive, another option is to manually edit the
.diff
file and remove any changes you don't want.If you open a diff file in emacs and put the editor in
diff-mode
you can edit patches and emacs will try to update the hunk markers. (Emacs will open.diff
files indiff-mode
automatically.)To update markers manually after making changes do
C-c C-w
to regenerate the hunk.To apply hunks one by one do
C-c C-a
. To reverse-apply doC-u C-c C-a
. You can alsoM-x diff-tell-file-name
to apply them to a different file.I found
patch original patch.diff
to be more reliable thanpatch < patch.diff
and patch files created withdiff -u
to be easier to work with.Information also documented here.
UPDATE [5.21.21]:
C-c C-s
lets you split up hunks which is very useful for manually editing. SometimesC-c C-w
(diff-ignore-whitespace-hunk
) does not do what you intended, so the safest bet is to split the hunks and let emacs update the headers automatically. This is especially useful when keeping lines unchanged; just split into a hunk and delete to remove the change.
精彩评论