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>
This commit is contained in:
Lars Hjemli 2009-08-24 08:53:21 +02:00
parent 007df98d21
commit 2273c2c821
3 changed files with 26 additions and 11 deletions

15
cgit.c
View File

@ -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"))

1
cgit.h
View File

@ -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;

View File

@ -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