Diff options
| author | Bryce Kwon <bryce@brycekwon.com> | |
|---|---|---|
| committer | Bryce Kwon <bryce@brycekwon.com> | |
| commit | ||
| parent | ||
| tree | ||
| download | ||
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.
| -rw-r--r-- | README.txt | 2 | |
| -rw-r--r-- | assets/cgit.css | 15 | |
| -rw-r--r-- | source/ui-tag.c | 29 | |
| -rwxr-xr-x | tests/t0005-markup.sh | 21 | |
| -rwxr-xr-x | tests/t0113-tag.sh | 12 |
5 files changed, 8 insertions, 71 deletions
@@ -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("<div class='commit-subject'>"); newline = strchr(msg, '\n'); if (newline) @@ -111,12 +96,6 @@ static void print_message(char *msg) html_txt(body); html("</div>"); } - if (signature) { - html("<details class='signature'><summary>Signature</summary><pre>"); - html_txt(signature); - html("</pre></details>"); - 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 "<div id=.cgit. class=.cgit-embedded. data-page=.summary." tmp ' -test_expect_success 'a signed tag folds its signature away' ' - ( - cd repos/hooks && - { - echo "object $(git rev-parse HEAD)" && - echo "type commit" && - echo "tag signed" && - echo "tagger C O Mitter <committer@example.com> 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 <signed-tag) - ) && - hooks "hooks/tag/&h=signed" >tmp && - grep "<details class=.signature.><summary>Signature</summary>" 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" <tmp >flat && - grep "<div class=.commit-msg.>Notes.</div><details class=.signature.><summary>Signature</summary><pre>-----BEGIN PGP SIGNATURE-----iQEzBAABCAAdFiEE-----END PGP SIGNATURE-----</pre></details>" flat -' - -test_expect_success 'an unsigned tag has no fold' ' - cgit_url "foo/tag/&h=v1.0" >tmp && - ! grep "details class=.signature." tmp + grep "<div class=.commit-msg.>Notes.-----BEGIN PGP SIGNATURE-----iQEzBAABCAAdFiEE-----END PGP SIGNATURE-----</div>" flat && + ! grep "<details" tmp ' test_done |
