diff options
author | Jason A. Donenfeld | 2012-07-11 05:32:45 +0200 |
---|---|---|
committer | Jason A. Donenfeld | 2012-07-12 20:01:46 +0200 |
commit | fc9181ff3d3ebbe0159871f6a49438e60bb17f58 (patch) | |
tree | a2b619e91112c9e8aaf03623a20f8e5c1aa36797 | |
parent | scan-tree: Support gitweb.description. (diff) | |
download | cgit-fc9181ff3d3ebbe0159871f6a49438e60bb17f58.tar.gz cgit-fc9181ff3d3ebbe0159871f6a49438e60bb17f58.zip |
scan-tree: Support gitweb.category.
Use gitweb.category from git config to determine repo's section, if option is enabled.
-rw-r--r-- | cgit.c | 1 | ||||
-rw-r--r-- | cgit.h | 1 | ||||
-rw-r--r-- | cgitrc.5.txt | 6 | ||||
-rw-r--r-- | scan-tree.c | 6 |
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 | ||
121 | enable-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 | |||
121 | enable-http-clone:: | 127 | enable-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; | |||
49 | repo_config_fn config_fn; | 49 | repo_config_fn config_fn; |
50 | char *owner; | 50 | char *owner; |
51 | char *desc; | 51 | char *desc; |
52 | char *section; | ||
52 | 53 | ||
53 | static void repo_config(const char *name, const char *value) | 54 | static 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) { |