summary refs log tree commit diff
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2009-08-24 08:53:21 +0200
committerLars Hjemli <hjemli@gmail.com>2009-08-24 10:22:59 +0200
commit2273c2c821bfc77d492d7e97ae38f162d7fc91aa (patch)
tree688acf38d828122c86af88585cd89dbf23efc239
parent007df98d2114fac4e9134cd7bc7e2960d0d730b4 (diff)
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 <hjemli@gmail.com>
-rw-r--r--cgit.c15
-rw-r--r--cgit.h1
-rw-r--r--cgitrc.5.txt21
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: <about-filter>.
+	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: <commit-filter>.
+	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: <source-filter>.
+	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