]> git.ipfire.org Git - thirdparty/git.git/commitdiff
xdiff: make classic diff explicit by creating xdl_do_classic_diff()
authorEzekiel Newren <ezekielnewren@gmail.com>
Fri, 2 Jan 2026 18:52:16 +0000 (18:52 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sun, 4 Jan 2026 02:44:51 +0000 (11:44 +0900)
Later patches will prepare xdl_cleanup_records() to be moved into xdiffi.c
since only the classic diff uses that function.

Signed-off-by: Ezekiel Newren <ezekielnewren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
xdiff/xdiffi.c
xdiff/xdiffi.h

index 4376f943dba539ec1cfd72e083e8e5a24d18e61d..e3196c7245934fb49eb3d8a522a4f7c1699752b9 100644 (file)
@@ -311,26 +311,13 @@ int xdl_recs_cmp(xdfile_t *xdf1, long off1, long lim1,
 }
 
 
-int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
-               xdfenv_t *xe) {
+int xdl_do_classic_diff(xdfenv_t *xe, uint64_t flags)
+{
        long ndiags;
        long *kvd, *kvdf, *kvdb;
        xdalgoenv_t xenv;
        int res;
 
-       if (xdl_prepare_env(mf1, mf2, xpp, xe) < 0)
-               return -1;
-
-       if (XDF_DIFF_ALG(xpp->flags) == XDF_PATIENCE_DIFF) {
-               res = xdl_do_patience_diff(xpp, xe);
-               goto out;
-       }
-
-       if (XDF_DIFF_ALG(xpp->flags) == XDF_HISTOGRAM_DIFF) {
-               res = xdl_do_histogram_diff(xpp, xe);
-               goto out;
-       }
-
        /*
         * Allocate and setup K vectors to be used by the differential
         * algorithm.
@@ -355,9 +342,33 @@ int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
        xenv.heur_min = XDL_HEUR_MIN_COST;
 
        res = xdl_recs_cmp(&xe->xdf1, 0, xe->xdf1.nreff, &xe->xdf2, 0, xe->xdf2.nreff,
-                          kvdf, kvdb, (xpp->flags & XDF_NEED_MINIMAL) != 0,
+                          kvdf, kvdb, (flags & XDF_NEED_MINIMAL) != 0,
                           &xenv);
+
        xdl_free(kvd);
+
+       return res;
+}
+
+
+int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
+               xdfenv_t *xe) {
+       int res;
+
+       if (xdl_prepare_env(mf1, mf2, xpp, xe) < 0)
+               return -1;
+
+       if (XDF_DIFF_ALG(xpp->flags) == XDF_PATIENCE_DIFF) {
+               res = xdl_do_patience_diff(xpp, xe);
+               goto out;
+       }
+
+       if (XDF_DIFF_ALG(xpp->flags) == XDF_HISTOGRAM_DIFF) {
+               res = xdl_do_histogram_diff(xpp, xe);
+               goto out;
+       }
+
+       res = xdl_do_classic_diff(xe, xpp->flags);
  out:
        if (res < 0)
                xdl_free_env(xe);
index 49e52c67f91fbfa40d15e2902a471962eb732364..8bf4c203730b1fa790ac8fb49f1a7916578a90ab 100644 (file)
@@ -42,6 +42,7 @@ typedef struct s_xdchange {
 int xdl_recs_cmp(xdfile_t *xdf1, long off1, long lim1,
                 xdfile_t *xdf2, long off2, long lim2,
                 long *kvdf, long *kvdb, int need_min, xdalgoenv_t *xenv);
+int xdl_do_classic_diff(xdfenv_t *xe, uint64_t flags);
 int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
                xdfenv_t *xe);
 int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long flags);