[PATCH 1/1] ui-tree: allow per repository override for enable-blame
Christian Hesse
list at eworm.de
Tue Feb 26 17:12:20 CET 2019
From: Christian Hesse <mail at eworm.de>
The blame operation can cause high cost in terms of CPU load for huge
repositories. Let's add a per repository override for enable-blame.
Signed-off-by: Christian Hesse <mail at eworm.de>
---
cgit.c | 4 ++++
cgit.h | 1 +
cgitrc.5.txt | 4 ++++
cmd.c | 2 +-
shared.c | 1 +
ui-tree.c | 4 ++--
6 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/cgit.c b/cgit.c
index 2f07e6d..2910d4b 100644
--- a/cgit.c
+++ b/cgit.c
@@ -50,6 +50,8 @@ static void repo_config(struct cgit_repo *repo, const char *name, const char *va
repo->extra_head_content = xstrdup(value);
else if (!strcmp(name, "snapshots"))
repo->snapshots = ctx.cfg.snapshots & cgit_parse_snapshots_mask(value);
+ else if (!strcmp(name, "enable-blame"))
+ repo->enable_blame = atoi(value);
else if (!strcmp(name, "enable-commit-graph"))
repo->enable_commit_graph = atoi(value);
else if (!strcmp(name, "enable-log-filecount"))
@@ -809,6 +811,8 @@ static void print_repo(FILE *f, struct cgit_repo *repo)
fprintf(f, "repo.homepage=%s\n", repo->homepage);
if (repo->clone_url)
fprintf(f, "repo.clone-url=%s\n", repo->clone_url);
+ fprintf(f, "repo.enable-blame=%d\n",
+ repo->enable_blame);
fprintf(f, "repo.enable-commit-graph=%d\n",
repo->enable_commit_graph);
fprintf(f, "repo.enable-log-filecount=%d\n",
diff --git a/cgit.h b/cgit.h
index bcc4fce..7ec46b4 100644
--- a/cgit.h
+++ b/cgit.h
@@ -94,6 +94,7 @@ struct cgit_repo {
char *logo_link;
char *snapshot_prefix;
int snapshots;
+ int enable_blame;
int enable_commit_graph;
int enable_log_filecount;
int enable_log_linecount;
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 34b351b..ba77826 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -485,6 +485,10 @@ repo.email-filter::
Override the default email-filter. Default value: none. See also:
"enable-filter-overrides". See also: "FILTER API".
+repo.enable-blame::
+ A flag which can be used to disable the global setting
+ `enable-blame'. Default value: none.
+
repo.enable-commit-graph::
A flag which can be used to disable the global setting
`enable-commit-graph'. Default value: none.
diff --git a/cmd.c b/cmd.c
index 63f0ae5..bf6d8f5 100644
--- a/cmd.c
+++ b/cmd.c
@@ -66,7 +66,7 @@ static void about_fn(void)
static void blame_fn(void)
{
- if (ctx.cfg.enable_blame)
+ if (ctx.repo->enable_blame)
cgit_print_blame();
else
cgit_print_error_page(403, "Forbidden", "Blame is disabled");
diff --git a/shared.c b/shared.c
index a2c0d03..8115469 100644
--- a/shared.c
+++ b/shared.c
@@ -58,6 +58,7 @@ struct cgit_repo *cgit_add_repo(const char *url)
ret->homepage = NULL;
ret->section = ctx.cfg.section;
ret->snapshots = ctx.cfg.snapshots;
+ ret->enable_blame = ctx.cfg.enable_blame;
ret->enable_commit_graph = ctx.cfg.enable_commit_graph;
ret->enable_log_filecount = ctx.cfg.enable_log_filecount;
ret->enable_log_linecount = ctx.cfg.enable_log_linecount;
diff --git a/ui-tree.c b/ui-tree.c
index df8ad82..4a0f9ec 100644
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -110,7 +110,7 @@ static void print_object(const struct object_id *oid, char *path, const char *ba
htmlf("blob: %s (", oid_to_hex(oid));
cgit_plain_link("plain", NULL, NULL, ctx.qry.head,
rev, path);
- if (ctx.cfg.enable_blame) {
+ if (ctx.repo->enable_blame) {
html(") (");
cgit_blame_link("blame", NULL, NULL, ctx.qry.head,
rev, path);
@@ -251,7 +251,7 @@ static int ls_item(const struct object_id *oid, struct strbuf *base,
if (!S_ISGITLINK(mode))
cgit_plain_link("plain", NULL, "button", ctx.qry.head,
walk_tree_ctx->curr_rev, fullpath.buf);
- if (!S_ISDIR(mode) && ctx.cfg.enable_blame)
+ if (!S_ISDIR(mode) && ctx.repo->enable_blame)
cgit_blame_link("blame", NULL, "button", ctx.qry.head,
walk_tree_ctx->curr_rev, fullpath.buf);
html("</td></tr>\n");
More information about the CGit
mailing list