Published: 06 Nov 2023
Patdiff - colored patience diffs with word-level refinement
Patdiff is an OCaml implementation of Bram Cohen's patience diff algorithm, with a few extra conveniences for comparing code and config files:
outputs plain ASCII, ANSI color codes, or HTML
optional semantic diffing of numbers
good word-level diffing out of the box
And of course all the usual features:
recursive diffing of directories
extensively configurable output (markers, colors, location format, context)
opam install patdiff
See here for Patdiff's opam package file.
Compiling from source
To build patdiff for local development, install its dependencies:
git clone https://github.com/janestreet/patdiff
opam install --deps-only .
To compile, and optionally install, patdiff:
patdiff old-file new-file
If you don't supply any arguments to patdiff, it will read diff-like text from stdin and color it in the normal patdiff way.
~/.patdiff is used as a config file if it exists. You can write a sample config with the
A simple wrapper is provided for using patdiff as git's "external diff" tool. You can enable it with:
export GIT_EXTERNAL_DIFF=$(command -v patdiff-git-wrapper)
git config --global diff.external $(command -v patdiff-git-wrapper)
More docs, including detailed API docs, are available here.