From 17e75dfa1edfc9f32676e0fdc21b7ea2464669d5 Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Thu, 29 Oct 2026 12:02:47 -1000 Subject: Stop folding a tag's signature away The fold put a click between the reader and the signature, and the browser's own disclosure marker and summary did not take the theme. The signature prints as part of the message again, as it did up to v2.9.1. --- README.txt | 2 -- assets/cgit.css | 15 --------------- source/ui-tag.c | 29 ++++------------------------- tests/t0005-markup.sh | 21 --------------------- tests/t0113-tag.sh | 12 ++++-------- 5 files changed, 8 insertions(+), 71 deletions(-) diff --git a/README.txt b/README.txt index e160af5..db55ec9 100644 --- a/README.txt +++ b/README.txt @@ -101,8 +101,6 @@ script added through the css and js options has stable hooks to work with. A character in a file that a browser would start a new line at, though git does not, such as a carriage return with no line feed after it, is shown as an escape sequence in span.escape. -* A signed tag's signature, of whatever kind git reads, is folded away in - details.signature after the tag's message. * The bundled auth filters write their login form as form.login, with p.login-error above it after a failed login. * Colours, fonts and metrics are custom properties on div#cgit, so a theme can diff --git a/assets/cgit.css b/assets/cgit.css index 49b00ab..7a4472a 100644 --- a/assets/cgit.css +++ b/assets/cgit.css @@ -875,21 +875,6 @@ div#cgit table.commit-trailers { margin-top: 1em; } -div#cgit details.signature { - margin-top: 1em; -} - -div#cgit details.signature summary { - color: var(--muted); - cursor: pointer; -} - -div#cgit details.signature pre { - margin: 0.5em 0 0; - font-family: var(--font-mono); - overflow-x: auto; -} - div#cgit table.commit-trailers th { text-align: left; font-weight: normal; diff --git a/source/ui-tag.c b/source/ui-tag.c index 246ff12..5fa8a17 100644 --- a/source/ui-tag.c +++ b/source/ui-tag.c @@ -11,7 +11,6 @@ #include "cgit.h" #include "filter.h" -#include "gpg-interface.h" #include "html.h" #include "parsing.h" #include "shared.h" @@ -72,31 +71,17 @@ static void print_download_row(const char *revname, const struct object *obj) } /* - * Cutting the subject and the signature out terminates the message in place, - * which is safe only because the caller frees it straight after. The blank - * lines between the subject and the body are skipped, as the commit page skips - * them. + * Cutting the subject out terminates the message in place, which is safe only + * because the caller frees it straight after. The blank lines between the + * subject and the body are skipped, as the commit page skips them. */ static void print_message(char *msg) { - char *newline, *body, *signature = NULL; - size_t len, start; + char *newline, *body; if (!msg) return; - // git finds the signature of any kind it can sign with, PGP, SSH or - // X.509, and it goes in a fold after the message, since its armour - // would otherwise run on for more lines than the message itself. - len = strlen(msg); - start = parse_signed_buffer(msg, len); - if (start < len) { - signature = xstrdup(msg + start); - while (start > 0 && msg[start - 1] == '\n') - start--; - msg[start] = '\0'; - } - html("
"); newline = strchr(msg, '\n'); if (newline) @@ -111,12 +96,6 @@ static void print_message(char *msg) html_txt(body); html("
"); } - if (signature) { - html("
Signature
");
-		html_txt(signature);
-		html("
"); - free(signature); - } } static void print_annotated_tag(const char *revname, const struct object_id *oid) diff --git a/tests/t0005-markup.sh b/tests/t0005-markup.sh index 0ba8ded..5d802a7 100755 --- a/tests/t0005-markup.sh +++ b/tests/t0005-markup.sh @@ -194,25 +194,4 @@ test_expect_success 'embedded mode marks the root' ' grep "
1700000000 +0000" && - echo && - echo "Signed" && - echo && - echo "-----BEGIN SSH SIGNATURE-----" && - echo "U1NIU0lH" && - echo "-----END SSH SIGNATURE-----" - } >signed-tag && - git update-ref refs/tags/signed $(git mktag tmp && - grep "
Signature" tmp -' - test_done diff --git a/tests/t0113-tag.sh b/tests/t0113-tag.sh index ec6f3c3..b91c7e6 100755 --- a/tests/t0113-tag.sh +++ b/tests/t0113-tag.sh @@ -60,8 +60,8 @@ test_expect_success 'a tag of anything but a commit offers no download' ' ' # git reads the signature off the end of a tag's message, so a block shaped -# like one is enough to show it is folded away, with nothing to verify. -test_expect_success 'a signed tag folds its signature after the message' ' +# like one is enough, with nothing to verify. +test_expect_success 'a signed tag shows its signature in the message' ' ( cd repos/foo && { @@ -82,12 +82,8 @@ test_expect_success 'a signed tag folds its signature after the message' ' ) && cgit_url "foo/tag/&h=signed" >tmp && tr -d "\n" flat && - grep "
Notes.
Signature
-----BEGIN PGP SIGNATURE-----iQEzBAABCAAdFiEE-----END PGP SIGNATURE-----
" flat -' - -test_expect_success 'an unsigned tag has no fold' ' - cgit_url "foo/tag/&h=v1.0" >tmp && - ! grep "details class=.signature." tmp + grep "
Notes.-----BEGIN PGP SIGNATURE-----iQEzBAABCAAdFiEE-----END PGP SIGNATURE-----
" flat && + ! grep "