Zutubi Diff is a Java library for parsing and applying patch files in unified diff and other formats. You can think of it as the library equivalent of the patch(1) utility, with the beginnings of support for more than just unified diffs.
The best way to start is to grab the latest jar from the downloads page and add it to your project. There are no additional dependencies. Here is a taste of code to parse and apply a diff:
PatchFileParser parser = new PatchFileParser(new UnifiedPatchParser()); PatchFile patchFile = parser.parse(new FileReader("/path/to/my.patch")); patchFile.apply(toDirectory, 3);
This code parses a patch from the file my.patch and applies it to the directory toDirectory, stripping 3 slashes from the paths. It is analogous to running:
$ cd toDirectory $ patch -p3 < /path/to/my.patch
Full code for this example can be found in the
examples/patch directory. Javadoc may be generated by running:
$ gradle javadoc
in the source tree (requires a recent Gradle, docs appear in
Currently full support is provided for unified diffs (the default for patches). Limited support for git diffs, an extension of the unified format used by git, Mercurial and other tools, is also provided. At present application of git diffs is not implemented.
Want to learn more? Check out the following resources:
If you have any thoughts, questions etc about the tasks, you can contact me at:
Or you can submit an issue or pull request via GitHub. All feedback is welcome.