From 2273c2c821bfc77d492d7e97ae38f162d7fc91aa Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Mon, 24 Aug 2009 08:53:21 +0200 Subject: Add config option 'enable-filter-overrides' This option must be enabled if repo-specific cgitrc files should be allowed to override any of the 'filter' options. Signed-off-by: Lars Hjemli --- cgit.c | 15 +++++++++------ cgit.h | 1 + cgitrc.5.txt | 21 ++++++++++++++++----- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/cgit.c b/cgit.c index 167b5dd..f1ea03c 100644 --- a/cgit.c +++ b/cgit.c @@ -66,17 +66,18 @@ void repo_config(struct cgit_repo *repo, const char *name, const char *value) repo->module_link= xstrdup(value); else if (!strcmp(name, "section")) repo->section = xstrdup(value); - else if (!strcmp(name, "about-filter")) - repo->about_filter = new_filter(value, 0); - else if (!strcmp(name, "commit-filter")) - repo->commit_filter = new_filter(value, 0); - else if (!strcmp(name, "source-filter")) - repo->source_filter = new_filter(value, 1); else if (!strcmp(name, "readme") && value != NULL) { if (*value == '/') ctx.repo->readme = xstrdup(value); else ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path, value)); + } else if (ctx.cfg.enable_filter_overrides) { + if (!strcmp(name, "about-filter")) + repo->about_filter = new_filter(value, 0); + else if (!strcmp(name, "commit-filter")) + repo->commit_filter = new_filter(value, 0); + else if (!strcmp(name, "source-filter")) + repo->source_filter = new_filter(value, 1); } } @@ -128,6 +129,8 @@ void config_cb(const char *name, const char *value) ctx.cfg.noheader = atoi(value); else if (!strcmp(name, "snapshots")) ctx.cfg.snapshots = cgit_parse_snapshots_mask(value); + else if (!strcmp(name, "enable-filter-overrides")) + ctx.cfg.enable_filter_overrides = atoi(value); else if (!strcmp(name, "enable-index-links")) ctx.cfg.enable_index_links = atoi(value); else if (!strcmp(name, "enable-log-filecount")) diff --git a/cgit.h b/cgit.h index 3359be9..ef109aa 100644 --- a/cgit.h +++ b/cgit.h @@ -174,6 +174,7 @@ struct cgit_config { int cache_scanrc_ttl; int cache_static_ttl; int embedded; + int enable_filter_overrides; int enable_index_links; int enable_log_filecount; int enable_log_linecount; diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 46df291..617b7c3 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt @@ -88,6 +88,10 @@ embedded:: suitable for embedding in other html pages. Default value: none. See also: "noheader". +enable-filter-overrides:: + Flag which, when set to "1", allows all filter settings to be + overridden in repository-specific cgitrc files. Default value: none. + enable-index-links:: Flag which, when set to "1", will make cgit generate extra links for each repo in the repository index (specifically, to the "summary", @@ -266,14 +270,16 @@ virtual-root:: REPOSITORY SETTINGS ------------------- repo.about-filter:: - Override the default about-filter. Default value: . + Override the default about-filter. Default value: none. See also: + "enable-filter-overrides". repo.clone-url:: A list of space-separated urls which can be used to clone this repo. Default value: none. repo.commit-filter:: - Override the default commit-filter. Default value: . + Override the default commit-filter. Default value: none. See also: + "enable-filter-overrides". repo.defbranch:: The name of the default branch for this repository. If no such branch @@ -320,7 +326,8 @@ repo.section:: none. repo.source-filter:: - Override the default source-filter. Default value: . + Override the default source-filter. Default value: none. See also: + "enable-filter-overrides". repo.url:: The relative url used to access the repository. This must be the first @@ -332,8 +339,12 @@ REPOSITORY-SPECIFIC CGITRC FILE When the option "scan-path" is used to auto-discover git repositories, cgit will try to parse the file "cgitrc" within any found repository. Such a repo-specific config file may contain any of the repo-specific options -described above, except "repo.url" and "repo.path". Also, in a repo-specific -config file, the "repo." prefix is dropped from the config option names. +described above, except "repo.url" and "repo.path". Additionally, the "filter" +options are only acknowledged in repo-specific config files when +"enable-filter-overrides" is set to "1". + +Note: the "repo." prefix is dropped from the option names in repo-specific +config files, e.g. "repo.desc" becomes "desc". EXAMPLE CGITRC FILE -- cgit v1.2.1