scan-tree: Support gitweb.category.

Use gitweb.category from git config to determine repo's section, if
option is enabled.
This commit is contained in:
Jason A. Donenfeld 2012-07-11 05:32:45 +02:00
parent b56be4ba3a
commit fc9181ff3d
4 changed files with 14 additions and 0 deletions

1
cgit.c
View File

@ -340,6 +340,7 @@ static void prepare_context(struct cgit_context *ctx)
ctx->cfg.local_time = 0; ctx->cfg.local_time = 0;
ctx->cfg.enable_gitweb_desc = 1; ctx->cfg.enable_gitweb_desc = 1;
ctx->cfg.enable_gitweb_owner = 1; ctx->cfg.enable_gitweb_owner = 1;
ctx->cfg.enable_gitweb_section = 1;
ctx->cfg.enable_http_clone = 1; ctx->cfg.enable_http_clone = 1;
ctx->cfg.enable_tree_linenumbers = 1; ctx->cfg.enable_tree_linenumbers = 1;
ctx->cfg.max_repo_count = 50; ctx->cfg.max_repo_count = 50;

1
cgit.h
View File

@ -200,6 +200,7 @@ struct cgit_config {
int enable_filter_overrides; int enable_filter_overrides;
int enable_gitweb_owner; int enable_gitweb_owner;
int enable_gitweb_desc; int enable_gitweb_desc;
int enable_gitweb_section;
int enable_http_clone; int enable_http_clone;
int enable_index_links; int enable_index_links;
int enable_commit_graph; int enable_commit_graph;

View File

@ -118,6 +118,12 @@ enable-gitweb-owner::
for the git config value "gitweb.owner" to determine the owner. for the git config value "gitweb.owner" to determine the owner.
Default value: "1". See also: scan-path. Default value: "1". See also: scan-path.
enable-gitweb-section::
If set to "1" and scan-path is enabled, we first check each repository
for the git config value "gitweb.category" to determine the repository's
section. This value is overridden if section-from-path is enabled.
Default value: "1". See also: scan-path section-from-path.
enable-http-clone:: enable-http-clone::
If set to "1", cgit will act as an dumb HTTP endpoint for git clones. If set to "1", cgit will act as an dumb HTTP endpoint for git clones.
If you use an alternate way of serving git repositories, you may wish If you use an alternate way of serving git repositories, you may wish

View File

@ -49,6 +49,7 @@ struct cgit_repo *repo;
repo_config_fn config_fn; repo_config_fn config_fn;
char *owner; char *owner;
char *desc; char *desc;
char *section;
static void repo_config(const char *name, const char *value) static void repo_config(const char *name, const char *value)
{ {
@ -61,6 +62,8 @@ static int gitweb_config(const char *key, const char *value, void *cb)
owner = xstrdup(value); owner = xstrdup(value);
else if (ctx.cfg.enable_gitweb_desc && !strcmp(key, "gitweb.description")) else if (ctx.cfg.enable_gitweb_desc && !strcmp(key, "gitweb.description"))
desc = xstrdup(value); desc = xstrdup(value);
else if (ctx.cfg.enable_gitweb_section && !strcmp(key, "gitweb.category"))
section = xstrdup(value);
return 0; return 0;
} }
@ -95,6 +98,7 @@ static void add_repo(const char *base, const char *path, repo_config_fn fn)
owner = NULL; owner = NULL;
desc = NULL; desc = NULL;
section = NULL;
git_config_from_file(gitweb_config, fmt("%s/config", path), NULL); git_config_from_file(gitweb_config, fmt("%s/config", path), NULL);
if (base == path) if (base == path)
@ -137,6 +141,8 @@ static void add_repo(const char *base, const char *path, repo_config_fn fn)
if (!stat(p, &st)) if (!stat(p, &st))
repo->readme = "README.html"; repo->readme = "README.html";
} }
if (section)
repo->section = section;
if (ctx.cfg.section_from_path) { if (ctx.cfg.section_from_path) {
n = ctx.cfg.section_from_path; n = ctx.cfg.section_from_path;
if (n > 0) { if (n > 0) {