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?
-
There's Meld, which can be configured to work with SVN. It's a graphical tool though, not sure if that qualifies. – Piskvor left the building Feb 09 '11 at 14:23
3 Answers
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.
- 15,896
- 7
- 53
- 61
- 7,261
- 2
- 24
- 34
-
1[`sdiff`](http://netbsd.gw.com/cgi-bin/man-cgi?sdiff++NetBSD-current) is good for merging two files. It will not really help when you have a patch to apply interactively. Well, for that, simply using `patch` with the `--dry-mode` option so find the invalid chunks and edit is probably enough. – tonio Feb 09 '11 at 14:29
-
2
-
7`sdiff file1 file2 -o outfile` will diff file1 and file2, and show you interactively each change, and you choose which one you want to go to the outfile. `sdiff` is the best. – pvinis Apr 30 '12 at 19:51
-
2@pvinis: Your comment should be an answer, and IMO it should be the accepted one! – Matthew Leingang Oct 01 '14 at 19:16
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.
Although not interactive, another option is to manually edit the
.difffile and remove any changes you don't want.If you open a diff file in emacs and put the editor in
diff-modeyou can edit patches and emacs will try to update the hunk markers. (Emacs will open.difffiles indiff-modeautomatically.)To update markers manually after making changes do
C-c C-wto 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-nameto apply them to a different file.I found
patch original patch.diffto be more reliable thanpatch < patch.diffand patch files created withdiff -uto be easier to work with.Information also documented here.
UPDATE [5.21.21]:
C-c C-slets 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.
- 1,886
- 4
- 24
- 28