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); repo->module_link= xstrdup(value);
else if (!strcmp(name, "section")) else if (!strcmp(name, "section"))
repo->section = xstrdup(value); 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) { else if (!strcmp(name, "readme") && value != NULL) {
if (*value == '/') if (*value == '/')
ctx.repo->readme = xstrdup(value); ctx.repo->readme = xstrdup(value);
else else
ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path, value)); 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); ctx.cfg.noheader = atoi(value);
else if (!strcmp(name, "snapshots")) else if (!strcmp(name, "snapshots"))
ctx.cfg.snapshots = cgit_parse_snapshots_mask(value); 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")) else if (!strcmp(name, "enable-index-links"))
ctx.cfg.enable_index_links = atoi(value); ctx.cfg.enable_index_links = atoi(value);
else if (!strcmp(name, "enable-log-filecount")) 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_scanrc_ttl;
int cache_static_ttl; int cache_static_ttl;
int embedded; int embedded;
int enable_filter_overrides;
int enable_index_links; int enable_index_links;
int enable_log_filecount; int enable_log_filecount;
int enable_log_linecount; int enable_log_linecount;

View File

@ -88,6 +88,10 @@ embedded::
suitable for embedding in other html pages. Default value: none. See suitable for embedding in other html pages. Default value: none. See
also: "noheader". 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:: enable-index-links::
Flag which, when set to "1", will make cgit generate extra links for Flag which, when set to "1", will make cgit generate extra links for
each repo in the repository index (specifically, to the "summary", each repo in the repository index (specifically, to the "summary",
@ -266,14 +270,16 @@ virtual-root::
REPOSITORY SETTINGS REPOSITORY SETTINGS
------------------- -------------------
repo.about-filter:: 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:: repo.clone-url::
A list of space-separated urls which can be used to clone this repo. A list of space-separated urls which can be used to clone this repo.
Default value: none. Default value: none.
repo.commit-filter:: 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:: repo.defbranch::
The name of the default branch for this repository. If no such branch The name of the default branch for this repository. If no such branch
@ -320,7 +326,8 @@ repo.section::
none. none.
repo.source-filter:: 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:: repo.url::
The relative url used to access the repository. This must be the first 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 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 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 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 described above, except "repo.url" and "repo.path". Additionally, the "filter"
config file, the "repo." prefix is dropped from the config option names. 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 EXAMPLE CGITRC FILE