]> git.ipfire.org Git - thirdparty/git.git/blobdiff - fmt-merge-msg.c
Merge branch 'mz/doc-notes-are-not-anchors'
[thirdparty/git.git] / fmt-merge-msg.c
index 9a664a4a5832daba2a69e1d91d996eddb1f8bb56..1e51492a05085f4e76bed5a32d72a6e2049b1271 100644 (file)
@@ -2,6 +2,7 @@
 #include "refs.h"
 #include "object-store.h"
 #include "diff.h"
+#include "diff-merges.h"
 #include "revision.h"
 #include "tag.h"
 #include "string-list.h"
@@ -509,22 +510,28 @@ static void fmt_merge_msg_sigs(struct strbuf *out)
        for (i = 0; i < origins.nr; i++) {
                struct object_id *oid = origins.items[i].util;
                enum object_type type;
-               unsigned long size, len;
+               unsigned long size;
                char *buf = read_object_file(oid, &type, &size);
+               char *origbuf = buf;
+               unsigned long len = size;
                struct signature_check sigc = { NULL };
-               struct strbuf sig = STRBUF_INIT;
+               struct strbuf payload = STRBUF_INIT, sig = STRBUF_INIT;
 
                if (!buf || type != OBJ_TAG)
                        goto next;
-               len = parse_signature(buf, size);
 
-               if (size == len)
-                       ; /* merely annotated */
-               else if (check_signature(buf, len, buf + len, size - len, &sigc) &&
-                       !sigc.gpg_output)
-                       strbuf_addstr(&sig, "gpg verification failed.\n");
-               else
-                       strbuf_addstr(&sig, sigc.gpg_output);
+               if (!parse_signature(buf, size, &payload, &sig))
+                       ;/* merely annotated */
+               else {
+                       buf = payload.buf;
+                       len = payload.len;
+                       if (check_signature(payload.buf, payload.len, sig.buf,
+                                        sig.len, &sigc) &&
+                               !sigc.gpg_output)
+                               strbuf_addstr(&sig, "gpg verification failed.\n");
+                       else
+                               strbuf_addstr(&sig, sigc.gpg_output);
+               }
                signature_check_clear(&sigc);
 
                if (!tag_number++) {
@@ -547,9 +554,10 @@ static void fmt_merge_msg_sigs(struct strbuf *out)
                                        strlen(origins.items[i].string));
                        fmt_tag_signature(&tagbuf, &sig, buf, len);
                }
+               strbuf_release(&payload);
                strbuf_release(&sig);
        next:
-               free(buf);
+               free(origbuf);
        }
        if (tagbuf.len) {
                strbuf_addch(out, '\n');
@@ -670,7 +678,7 @@ int fmt_merge_msg(struct strbuf *in, struct strbuf *out,
                head = lookup_commit_or_die(&head_oid, "HEAD");
                repo_init_revisions(the_repository, &rev, NULL);
                rev.commit_format = CMIT_FMT_ONELINE;
-               rev.ignore_merges = 1;
+               diff_merges_suppress(&rev);
                rev.limited = 1;
 
                strbuf_complete_line(out);