From 723ba6c1ff41bcd12b679302b3a0776540e454a4 Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Thu, 29 Oct 2026 13:31:07 -1000 Subject: Offer the versions as an option enable-version-info brings back the cgit and git versions that 3a00e19 took off the footer and the generator tag, for a site that wants them, and the version 2a6726a put on the signature of patches now follows it too. It stays off by default for the reason 3a00e19 gave. --- MANUAL.txt | 8 ++++++++ custom/cgitrc | 6 ++++++ source/cgit.c | 2 ++ source/cgit.h | 1 + source/ui-patch.c | 8 ++++++-- source/ui-shared.c | 10 +++++++++- tests/t0005-markup.sh | 22 ++++++++++++++++++++++ tests/t0109-patch.sh | 18 ++++++++++++++---- 8 files changed, 68 insertions(+), 7 deletions(-) diff --git a/MANUAL.txt b/MANUAL.txt index e14b0dc..c6909cc 100644 --- a/MANUAL.txt +++ b/MANUAL.txt @@ -287,6 +287,14 @@ enable-tree-linenumbers:: Flag which, when set to "1", makes cgit generate linenumber links for plaintext blobs printed in the tree and blame pages. Default value: "1". +enable-version-info:: + Flag which, when set to "1", names the cgit and git versions in the + standard page footer and the generator meta tag, and the cgit version + in the signature that ends each patch. Exact versions help someone + match a site against published advisories, so they are left out unless + a site asks for them, and a footer set with footer replaces the + standard one either way. Default value: "0". + favicon:: Url used as link to the icon for cgit. Any path works, but keeping the value "/favicon.ico" is still worthwhile, since clients that do not diff --git a/custom/cgitrc b/custom/cgitrc index 569feb4..86f00aa 100644 --- a/custom/cgitrc +++ b/custom/cgitrc @@ -241,6 +241,12 @@ enable-html-serving=0 # Values are 0 or 1. Default is 1. enable-tree-linenumbers=1 +# Name the cgit and git versions in the page footer, the generator tag and +# the signature of patches. Exact versions help someone match a site against +# advisories, so they stay out unless asked for. Values are 0 or 1. Default +# is 0. +enable-version-info=0 + # List directories first, then files, in the tree page. Values are 0 or 1. # Default is 0. enable-tree-group-dirs=0 diff --git a/source/cgit.c b/source/cgit.c index efcb703..eaf1d19 100644 --- a/source/cgit.c +++ b/source/cgit.c @@ -586,6 +586,8 @@ static void apply_config(const char *name, const char *value) ctx.cfg.enable_html_serving = atoi(value); else if (!strcmp(name, "enable-tree-linenumbers")) ctx.cfg.enable_tree_linenumbers = atoi(value); + else if (!strcmp(name, "enable-version-info")) + ctx.cfg.enable_version_info = atoi(value); else if (!strcmp(name, "enable-tree-group-dirs")) ctx.cfg.enable_tree_group_dirs = atoi(value); else if (!strcmp(name, "enable-git-config")) diff --git a/source/cgit.h b/source/cgit.h index c04193f..5e17a3e 100644 --- a/source/cgit.h +++ b/source/cgit.h @@ -227,6 +227,7 @@ struct cgit_config { int embedded; int trust_scan_config; int enable_follow_links; + int enable_version_info; int enable_gitmodules_links; int enable_header; int enable_http_clone; diff --git a/source/ui-patch.c b/source/ui-patch.c index 78c850c..04083fe 100644 --- a/source/ui-patch.c +++ b/source/ui-patch.c @@ -132,7 +132,8 @@ void cgit_print_patch(const char *new_rev, const char *old_rev, const char *pref cgit_print_http_headers(); // git format-patch signs with its bare version number, so the v that - // cgit's tags carry is left off to read the same way. + // cgit's tags carry is left off to read the same way. Without + // enable-version-info the signature names cgit alone. if (!skip_prefix(cgit_version, "v", &version)) version = cgit_version; @@ -141,6 +142,9 @@ void cgit_print_patch(const char *new_rev, const char *old_rev, const char *pref // Two dashes and a space is the mail signature separator, so // git am and mail readers drop the version note below rather // than carrying it into the commit message. - printf("-- \ncgit %s\n\n", version); + if (ctx.cfg.enable_version_info) + printf("-- \ncgit %s\n\n", version); + else + printf("-- \ncgit\n\n"); } } diff --git a/source/ui-shared.c b/source/ui-shared.c index 8da9878..936a6a4 100644 --- a/source/ui-shared.c +++ b/source/ui-shared.c @@ -1558,7 +1558,10 @@ void cgit_print_docstart(void) html_attr(ctx.cfg.root_desc); html("'>\n"); } - html("\n"); + if (ctx.cfg.enable_version_info) + htmlf("\n", cgit_version); + else + html("\n"); if (ctx.cfg.robots && *ctx.cfg.robots) { html("generated by " + "cgit %s " + "(git %s)\n", + cgit_version, git_version_string); else html("\n"); html("\n"); diff --git a/tests/t0005-markup.sh b/tests/t0005-markup.sh index 52d9e34..5fa866d 100755 --- a/tests/t0005-markup.sh +++ b/tests/t0005-markup.sh @@ -44,6 +44,28 @@ test_expect_success 'the landmarks and the search form are in place' ' grep "