path: root/xdiff/xdiffi.c
diff options
authorTay Ray Chuan <>2011-07-12 06:10:25 (GMT)
committerJunio C Hamano <>2011-07-12 16:29:20 (GMT)
commit8c912eea94a2138e8bc608f7c390eb0b313effb0 (patch)
tree244d67eaac3f77d6645bdf69b87e23a90dbb2485 /xdiff/xdiffi.c
parent46c8f2988dc9a6012babd5833a6245ceff214483 (diff)
teach --histogram to diff
Port JGit's HistogramDiff algorithm over to C. Rough numbers (TODO) show that it is faster than its --patience cousin, as well as the default Meyers algorithm. The implementation has been reworked to use structs and pointers, instead of bitmasks, thus doing away with JGit's 2^28 line limit. We also use xdiff's default hash table implementation (xdl_hash_bits() with XDL_HASHLONG()) for convenience. Signed-off-by: Tay Ray Chuan <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'xdiff/xdiffi.c')
1 files changed, 3 insertions, 0 deletions
diff --git a/xdiff/xdiffi.c b/xdiff/xdiffi.c
index da67c04..75a3922 100644
--- a/xdiff/xdiffi.c
+++ b/xdiff/xdiffi.c
@@ -331,6 +331,9 @@ int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
if (xpp->flags & XDF_PATIENCE_DIFF)
return xdl_do_patience_diff(mf1, mf2, xpp, xe);
+ if (xpp->flags & XDF_HISTOGRAM_DIFF)
+ return xdl_do_histogram_diff(mf1, mf2, xpp, xe);
if (xdl_prepare_env(mf1, mf2, xpp, xe) < 0) {
return -1;