scan-tree: Support gitweb.category.

Use gitweb.category from git config to determine repo's section, if
option is enabled.
Этот коммит содержится в:
Jason A. Donenfeld 2012-07-11 05:32:45 +02:00
родитель b56be4ba3a
Коммит fc9181ff3d
4 изменённых файлов: 14 добавлений и 0 удалений

1
cgit.c
Просмотреть файл

@ -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
Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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