aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Jason A. Donenfeld <Jason@zx2c4.com>2012-07-11 12:32:45 (JST)
committerGravatar Jason A. Donenfeld <Jason@zx2c4.com>2012-07-13 03:01:46 (JST)
commitfc9181ff3d3ebbe0159871f6a49438e60bb17f58 (patch)
treea2b619e91112c9e8aaf03623a20f8e5c1aa36797
parentb56be4ba3a942dd1978fe4bfecd9afc35aab0027 (diff)
downloadcgit-fc9181ff3d3ebbe0159871f6a49438e60bb17f58.zip
cgit-fc9181ff3d3ebbe0159871f6a49438e60bb17f58.tar.gz
scan-tree: Support gitweb.category.
Use gitweb.category from git config to determine repo's section, if option is enabled.
-rw-r--r--cgit.c1
-rw-r--r--cgit.h1
-rw-r--r--cgitrc.5.txt6
-rw-r--r--scan-tree.c6
4 files changed, 14 insertions, 0 deletions
diff --git a/cgit.c b/cgit.c
index ec5bbce..4656ed6 100644
--- a/cgit.c
+++ b/cgit.c
@@ -340,6 +340,7 @@ static void prepare_context(struct cgit_context *ctx)
340 ctx->cfg.local_time = 0; 340 ctx->cfg.local_time = 0;
341 ctx->cfg.enable_gitweb_desc = 1; 341 ctx->cfg.enable_gitweb_desc = 1;
342 ctx->cfg.enable_gitweb_owner = 1; 342 ctx->cfg.enable_gitweb_owner = 1;
343 ctx->cfg.enable_gitweb_section = 1;
343 ctx->cfg.enable_http_clone = 1; 344 ctx->cfg.enable_http_clone = 1;
344 ctx->cfg.enable_tree_linenumbers = 1; 345 ctx->cfg.enable_tree_linenumbers = 1;
345 ctx->cfg.max_repo_count = 50; 346 ctx->cfg.max_repo_count = 50;
diff --git a/cgit.h b/cgit.h
index f4d0e52..91b4d72 100644
--- a/cgit.h
+++ b/cgit.h
@@ -200,6 +200,7 @@ struct cgit_config {
200 int enable_filter_overrides; 200 int enable_filter_overrides;
201 int enable_gitweb_owner; 201 int enable_gitweb_owner;
202 int enable_gitweb_desc; 202 int enable_gitweb_desc;
203 int enable_gitweb_section;
203 int enable_http_clone; 204 int enable_http_clone;
204 int enable_index_links; 205 int enable_index_links;
205 int enable_commit_graph; 206 int enable_commit_graph;
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 86a19a9..d1a90c5 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -118,6 +118,12 @@ enable-gitweb-owner::
118 for the git config value "gitweb.owner" to determine the owner. 118 for the git config value "gitweb.owner" to determine the owner.
119 Default value: "1". See also: scan-path. 119 Default value: "1". See also: scan-path.
120 120
121enable-gitweb-section::
122 If set to "1" and scan-path is enabled, we first check each repository
123 for the git config value "gitweb.category" to determine the repository's
124 section. This value is overridden if section-from-path is enabled.
125 Default value: "1". See also: scan-path section-from-path.
126
121enable-http-clone:: 127enable-http-clone::
122 If set to "1", cgit will act as an dumb HTTP endpoint for git clones. 128 If set to "1", cgit will act as an dumb HTTP endpoint for git clones.
123 If you use an alternate way of serving git repositories, you may wish 129 If you use an alternate way of serving git repositories, you may wish
diff --git a/scan-tree.c b/scan-tree.c
index 3d4e417..50eedea 100644
--- a/scan-tree.c
+++ b/scan-tree.c
@@ -49,6 +49,7 @@ struct cgit_repo *repo;
49repo_config_fn config_fn; 49repo_config_fn config_fn;
50char *owner; 50char *owner;
51char *desc; 51char *desc;
52char *section;
52 53
53static void repo_config(const char *name, const char *value) 54static void repo_config(const char *name, const char *value)
54{ 55{
@@ -61,6 +62,8 @@ static int gitweb_config(const char *key, const char *value, void *cb)
61 owner = xstrdup(value); 62 owner = xstrdup(value);
62 else if (ctx.cfg.enable_gitweb_desc && !strcmp(key, "gitweb.description")) 63 else if (ctx.cfg.enable_gitweb_desc && !strcmp(key, "gitweb.description"))
63 desc = xstrdup(value); 64 desc = xstrdup(value);
65 else if (ctx.cfg.enable_gitweb_section && !strcmp(key, "gitweb.category"))
66 section = xstrdup(value);
64 return 0; 67 return 0;
65} 68}
66 69
@@ -95,6 +98,7 @@ static void add_repo(const char *base, const char *path, repo_config_fn fn)
95 98
96 owner = NULL; 99 owner = NULL;
97 desc = NULL; 100 desc = NULL;
101 section = NULL;
98 git_config_from_file(gitweb_config, fmt("%s/config", path), NULL); 102 git_config_from_file(gitweb_config, fmt("%s/config", path), NULL);
99 103
100 if (base == path) 104 if (base == path)
@@ -137,6 +141,8 @@ static void add_repo(const char *base, const char *path, repo_config_fn fn)
137 if (!stat(p, &st)) 141 if (!stat(p, &st))
138 repo->readme = "README.html"; 142 repo->readme = "README.html";
139 } 143 }
144 if (section)
145 repo->section = section;
140 if (ctx.cfg.section_from_path) { 146 if (ctx.cfg.section_from_path) {
141 n = ctx.cfg.section_from_path; 147 n = ctx.cfg.section_from_path;
142 if (n > 0) { 148 if (n > 0) {