HomePhabricator

xdiff: remove patience and histogram diff algorithms

Authored by quark.

Description

xdiff: remove patience and histogram diff algorithms

Patience diff is the normal diff algorithm, plus some greediness that
unconditionally matches common common unique lines. That means it is easy to
construct cases to let it generate suboptimal result, like:

open('a', 'w').write('\n'.join(list('a' + 'x' * 300 + 'u' + 'x' * 700 + 'a\n')))
open('b', 'w').write('\n'.join(list('b' + 'x' * 700 + 'u' + 'x' * 300 + 'b\n')))

Patience diff has been advertised as being able to generate better results for
some C code changes. However, the more scientific way to do that is the
indention heuristic [1].

Since patience diff could generate suboptimal result more easily and its
"better" diff feature could be replaced by the new indention heuristic, let's
just remove it and its variant histogram diff to simplify the code.

[1]: https://github.com/git/git/commit/433860f3d0beb0c6f205290bd16cda413148f098

Test Plan:
gcc -fPIC *.c --shared -o xdiff.so still builds.

Differential Revision: https://phab.mercurial-scm.org/D2573

Details

Committed
quarkMar 3 2018, 1:39 PM
Differential Revision
D2573: xdiff: remove patience and histogram diff algorithms
Parents
rHG34e2ff1f9cd8: xdiff: vendor xdiff library from git
Branches
Unknown
Tags
Unknown