]> git.ipfire.org Git - thirdparty/git.git/commitdiff
diff: discard hunk headers for patch-ids earlier
authorJeff King <peff@peff.net>
Fri, 2 Nov 2018 06:36:36 +0000 (02:36 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 5 Nov 2018 04:14:35 +0000 (13:14 +0900)
We do not include hunk header lines when computing patch-ids, since
the line numbers would create false negatives. Rather than detect and
skip them in our line callback, we can simply tell xdiff to avoid
generating them.

This is similar to the previous commit, but split out because it
actually requires modifying the matching line callback.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c

diff --git a/diff.c b/diff.c
index d3e72623109c14d8f143fc877a4012ac5b7679a1..ab55b0466ede4ce16098c46007030c7a0c283f7c 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -5607,10 +5607,6 @@ static void patch_id_consume(void *priv, char *line, unsigned long len)
        struct patch_id_t *data = priv;
        int new_len;
 
-       /* Ignore line numbers when computing the SHA1 of the patch */
-       if (starts_with(line, "@@ -"))
-               return;
-
        new_len = remove_space(line, len);
 
        git_SHA1_Update(data->ctx, line, new_len);
@@ -5712,8 +5708,8 @@ static int diff_get_patch_id(struct diff_options *options, struct object_id *oid
                xpp.flags = 0;
                xecfg.ctxlen = 3;
                xecfg.flags = 0;
-               if (xdi_diff_outf(&mf1, &mf2, NULL, patch_id_consume,
-                                 &data, &xpp, &xecfg))
+               if (xdi_diff_outf(&mf1, &mf2, discard_hunk_line,
+                                 patch_id_consume, &data, &xpp, &xecfg))
                        return error("unable to generate patch-id diff for %s",
                                     p->one->path);
        }