author | Lars Hjemli <hjemli@gmail.com> | 2009-08-23 21:00:28 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2009-08-24 08:22:58 (UTC) |
commit | 39398545787179bc8075d64a443f9da3845c4f67 (patch) (unidiff) | |
tree | f8710ddde4d91a633d97d9c88c9d21b0abbb8fcf | |
parent | e7af002d5c405c82652f739d08ced3908d1f57e7 (diff) | |
download | cgit-39398545787179bc8075d64a443f9da3845c4f67.zip cgit-39398545787179bc8075d64a443f9da3845c4f67.tar.gz cgit-39398545787179bc8075d64a443f9da3845c4f67.tar.bz2 |
Add config option 'repo.section'
This option can be used to specify the section name for the current
repository.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | cgit.c | 2 | ||||
-rw-r--r-- | cgitrc.5.txt | 3 |
2 files changed, 5 insertions, 0 deletions
@@ -76,192 +76,194 @@ void config_cb(const char *name, const char *value) | |||
76 | ctx.cfg.virtual_root = ""; | 76 | ctx.cfg.virtual_root = ""; |
77 | } else if (!strcmp(name, "nocache")) | 77 | } else if (!strcmp(name, "nocache")) |
78 | ctx.cfg.nocache = atoi(value); | 78 | ctx.cfg.nocache = atoi(value); |
79 | else if (!strcmp(name, "noplainemail")) | 79 | else if (!strcmp(name, "noplainemail")) |
80 | ctx.cfg.noplainemail = atoi(value); | 80 | ctx.cfg.noplainemail = atoi(value); |
81 | else if (!strcmp(name, "noheader")) | 81 | else if (!strcmp(name, "noheader")) |
82 | ctx.cfg.noheader = atoi(value); | 82 | ctx.cfg.noheader = atoi(value); |
83 | else if (!strcmp(name, "snapshots")) | 83 | else if (!strcmp(name, "snapshots")) |
84 | ctx.cfg.snapshots = cgit_parse_snapshots_mask(value); | 84 | ctx.cfg.snapshots = cgit_parse_snapshots_mask(value); |
85 | else if (!strcmp(name, "enable-index-links")) | 85 | else if (!strcmp(name, "enable-index-links")) |
86 | ctx.cfg.enable_index_links = atoi(value); | 86 | ctx.cfg.enable_index_links = atoi(value); |
87 | else if (!strcmp(name, "enable-log-filecount")) | 87 | else if (!strcmp(name, "enable-log-filecount")) |
88 | ctx.cfg.enable_log_filecount = atoi(value); | 88 | ctx.cfg.enable_log_filecount = atoi(value); |
89 | else if (!strcmp(name, "enable-log-linecount")) | 89 | else if (!strcmp(name, "enable-log-linecount")) |
90 | ctx.cfg.enable_log_linecount = atoi(value); | 90 | ctx.cfg.enable_log_linecount = atoi(value); |
91 | else if (!strcmp(name, "max-stats")) | 91 | else if (!strcmp(name, "max-stats")) |
92 | ctx.cfg.max_stats = cgit_find_stats_period(value, NULL); | 92 | ctx.cfg.max_stats = cgit_find_stats_period(value, NULL); |
93 | else if (!strcmp(name, "cache-size")) | 93 | else if (!strcmp(name, "cache-size")) |
94 | ctx.cfg.cache_size = atoi(value); | 94 | ctx.cfg.cache_size = atoi(value); |
95 | else if (!strcmp(name, "cache-root")) | 95 | else if (!strcmp(name, "cache-root")) |
96 | ctx.cfg.cache_root = xstrdup(value); | 96 | ctx.cfg.cache_root = xstrdup(value); |
97 | else if (!strcmp(name, "cache-root-ttl")) | 97 | else if (!strcmp(name, "cache-root-ttl")) |
98 | ctx.cfg.cache_root_ttl = atoi(value); | 98 | ctx.cfg.cache_root_ttl = atoi(value); |
99 | else if (!strcmp(name, "cache-repo-ttl")) | 99 | else if (!strcmp(name, "cache-repo-ttl")) |
100 | ctx.cfg.cache_repo_ttl = atoi(value); | 100 | ctx.cfg.cache_repo_ttl = atoi(value); |
101 | else if (!strcmp(name, "cache-scanrc-ttl")) | 101 | else if (!strcmp(name, "cache-scanrc-ttl")) |
102 | ctx.cfg.cache_scanrc_ttl = atoi(value); | 102 | ctx.cfg.cache_scanrc_ttl = atoi(value); |
103 | else if (!strcmp(name, "cache-static-ttl")) | 103 | else if (!strcmp(name, "cache-static-ttl")) |
104 | ctx.cfg.cache_static_ttl = atoi(value); | 104 | ctx.cfg.cache_static_ttl = atoi(value); |
105 | else if (!strcmp(name, "cache-dynamic-ttl")) | 105 | else if (!strcmp(name, "cache-dynamic-ttl")) |
106 | ctx.cfg.cache_dynamic_ttl = atoi(value); | 106 | ctx.cfg.cache_dynamic_ttl = atoi(value); |
107 | else if (!strcmp(name, "about-filter")) | 107 | else if (!strcmp(name, "about-filter")) |
108 | ctx.cfg.about_filter = new_filter(value, 0); | 108 | ctx.cfg.about_filter = new_filter(value, 0); |
109 | else if (!strcmp(name, "commit-filter")) | 109 | else if (!strcmp(name, "commit-filter")) |
110 | ctx.cfg.commit_filter = new_filter(value, 0); | 110 | ctx.cfg.commit_filter = new_filter(value, 0); |
111 | else if (!strcmp(name, "embedded")) | 111 | else if (!strcmp(name, "embedded")) |
112 | ctx.cfg.embedded = atoi(value); | 112 | ctx.cfg.embedded = atoi(value); |
113 | else if (!strcmp(name, "max-message-length")) | 113 | else if (!strcmp(name, "max-message-length")) |
114 | ctx.cfg.max_msg_len = atoi(value); | 114 | ctx.cfg.max_msg_len = atoi(value); |
115 | else if (!strcmp(name, "max-repodesc-length")) | 115 | else if (!strcmp(name, "max-repodesc-length")) |
116 | ctx.cfg.max_repodesc_len = atoi(value); | 116 | ctx.cfg.max_repodesc_len = atoi(value); |
117 | else if (!strcmp(name, "max-repo-count")) | 117 | else if (!strcmp(name, "max-repo-count")) |
118 | ctx.cfg.max_repo_count = atoi(value); | 118 | ctx.cfg.max_repo_count = atoi(value); |
119 | else if (!strcmp(name, "max-commit-count")) | 119 | else if (!strcmp(name, "max-commit-count")) |
120 | ctx.cfg.max_commit_count = atoi(value); | 120 | ctx.cfg.max_commit_count = atoi(value); |
121 | else if (!strcmp(name, "scan-path")) | 121 | else if (!strcmp(name, "scan-path")) |
122 | if (!ctx.cfg.nocache && ctx.cfg.cache_size) | 122 | if (!ctx.cfg.nocache && ctx.cfg.cache_size) |
123 | process_cached_repolist(value); | 123 | process_cached_repolist(value); |
124 | else | 124 | else |
125 | scan_tree(value); | 125 | scan_tree(value); |
126 | else if (!strcmp(name, "source-filter")) | 126 | else if (!strcmp(name, "source-filter")) |
127 | ctx.cfg.source_filter = new_filter(value, 1); | 127 | ctx.cfg.source_filter = new_filter(value, 1); |
128 | else if (!strcmp(name, "summary-log")) | 128 | else if (!strcmp(name, "summary-log")) |
129 | ctx.cfg.summary_log = atoi(value); | 129 | ctx.cfg.summary_log = atoi(value); |
130 | else if (!strcmp(name, "summary-branches")) | 130 | else if (!strcmp(name, "summary-branches")) |
131 | ctx.cfg.summary_branches = atoi(value); | 131 | ctx.cfg.summary_branches = atoi(value); |
132 | else if (!strcmp(name, "summary-tags")) | 132 | else if (!strcmp(name, "summary-tags")) |
133 | ctx.cfg.summary_tags = atoi(value); | 133 | ctx.cfg.summary_tags = atoi(value); |
134 | else if (!strcmp(name, "agefile")) | 134 | else if (!strcmp(name, "agefile")) |
135 | ctx.cfg.agefile = xstrdup(value); | 135 | ctx.cfg.agefile = xstrdup(value); |
136 | else if (!strcmp(name, "renamelimit")) | 136 | else if (!strcmp(name, "renamelimit")) |
137 | ctx.cfg.renamelimit = atoi(value); | 137 | ctx.cfg.renamelimit = atoi(value); |
138 | else if (!strcmp(name, "robots")) | 138 | else if (!strcmp(name, "robots")) |
139 | ctx.cfg.robots = xstrdup(value); | 139 | ctx.cfg.robots = xstrdup(value); |
140 | else if (!strcmp(name, "clone-prefix")) | 140 | else if (!strcmp(name, "clone-prefix")) |
141 | ctx.cfg.clone_prefix = xstrdup(value); | 141 | ctx.cfg.clone_prefix = xstrdup(value); |
142 | else if (!strcmp(name, "local-time")) | 142 | else if (!strcmp(name, "local-time")) |
143 | ctx.cfg.local_time = atoi(value); | 143 | ctx.cfg.local_time = atoi(value); |
144 | else if (!prefixcmp(name, "mimetype.")) | 144 | else if (!prefixcmp(name, "mimetype.")) |
145 | add_mimetype(name + 9, value); | 145 | add_mimetype(name + 9, value); |
146 | else if (!strcmp(name, "section") || !strcmp(name, "repo.group")) | 146 | else if (!strcmp(name, "section") || !strcmp(name, "repo.group")) |
147 | ctx.cfg.section = xstrdup(value); | 147 | ctx.cfg.section = xstrdup(value); |
148 | else if (!strcmp(name, "repo.url")) | 148 | else if (!strcmp(name, "repo.url")) |
149 | ctx.repo = cgit_add_repo(value); | 149 | ctx.repo = cgit_add_repo(value); |
150 | else if (!strcmp(name, "repo.name")) | 150 | else if (!strcmp(name, "repo.name")) |
151 | ctx.repo->name = xstrdup(value); | 151 | ctx.repo->name = xstrdup(value); |
152 | else if (ctx.repo && !strcmp(name, "repo.path")) | 152 | else if (ctx.repo && !strcmp(name, "repo.path")) |
153 | ctx.repo->path = trim_end(value, '/'); | 153 | ctx.repo->path = trim_end(value, '/'); |
154 | else if (ctx.repo && !strcmp(name, "repo.clone-url")) | 154 | else if (ctx.repo && !strcmp(name, "repo.clone-url")) |
155 | ctx.repo->clone_url = xstrdup(value); | 155 | ctx.repo->clone_url = xstrdup(value); |
156 | else if (ctx.repo && !strcmp(name, "repo.desc")) | 156 | else if (ctx.repo && !strcmp(name, "repo.desc")) |
157 | ctx.repo->desc = xstrdup(value); | 157 | ctx.repo->desc = xstrdup(value); |
158 | else if (ctx.repo && !strcmp(name, "repo.owner")) | 158 | else if (ctx.repo && !strcmp(name, "repo.owner")) |
159 | ctx.repo->owner = xstrdup(value); | 159 | ctx.repo->owner = xstrdup(value); |
160 | else if (ctx.repo && !strcmp(name, "repo.defbranch")) | 160 | else if (ctx.repo && !strcmp(name, "repo.defbranch")) |
161 | ctx.repo->defbranch = xstrdup(value); | 161 | ctx.repo->defbranch = xstrdup(value); |
162 | else if (ctx.repo && !strcmp(name, "repo.snapshots")) | 162 | else if (ctx.repo && !strcmp(name, "repo.snapshots")) |
163 | ctx.repo->snapshots = ctx.cfg.snapshots & cgit_parse_snapshots_mask(value); /* XXX: &? */ | 163 | ctx.repo->snapshots = ctx.cfg.snapshots & cgit_parse_snapshots_mask(value); /* XXX: &? */ |
164 | else if (ctx.repo && !strcmp(name, "repo.enable-log-filecount")) | 164 | else if (ctx.repo && !strcmp(name, "repo.enable-log-filecount")) |
165 | ctx.repo->enable_log_filecount = ctx.cfg.enable_log_filecount * atoi(value); | 165 | ctx.repo->enable_log_filecount = ctx.cfg.enable_log_filecount * atoi(value); |
166 | else if (ctx.repo && !strcmp(name, "repo.enable-log-linecount")) | 166 | else if (ctx.repo && !strcmp(name, "repo.enable-log-linecount")) |
167 | ctx.repo->enable_log_linecount = ctx.cfg.enable_log_linecount * atoi(value); | 167 | ctx.repo->enable_log_linecount = ctx.cfg.enable_log_linecount * atoi(value); |
168 | else if (ctx.repo && !strcmp(name, "repo.max-stats")) | 168 | else if (ctx.repo && !strcmp(name, "repo.max-stats")) |
169 | ctx.repo->max_stats = cgit_find_stats_period(value, NULL); | 169 | ctx.repo->max_stats = cgit_find_stats_period(value, NULL); |
170 | else if (ctx.repo && !strcmp(name, "repo.module-link")) | 170 | else if (ctx.repo && !strcmp(name, "repo.module-link")) |
171 | ctx.repo->module_link= xstrdup(value); | 171 | ctx.repo->module_link= xstrdup(value); |
172 | else if (ctx.repo && !strcmp(name, "repo.section")) | ||
173 | ctx.repo->section = xstrdup(value); | ||
172 | else if (ctx.repo && !strcmp(name, "repo.about-filter")) | 174 | else if (ctx.repo && !strcmp(name, "repo.about-filter")) |
173 | ctx.repo->about_filter = new_filter(value, 0); | 175 | ctx.repo->about_filter = new_filter(value, 0); |
174 | else if (ctx.repo && !strcmp(name, "repo.commit-filter")) | 176 | else if (ctx.repo && !strcmp(name, "repo.commit-filter")) |
175 | ctx.repo->commit_filter = new_filter(value, 0); | 177 | ctx.repo->commit_filter = new_filter(value, 0); |
176 | else if (ctx.repo && !strcmp(name, "repo.source-filter")) | 178 | else if (ctx.repo && !strcmp(name, "repo.source-filter")) |
177 | ctx.repo->source_filter = new_filter(value, 1); | 179 | ctx.repo->source_filter = new_filter(value, 1); |
178 | else if (ctx.repo && !strcmp(name, "repo.readme") && value != NULL) { | 180 | else if (ctx.repo && !strcmp(name, "repo.readme") && value != NULL) { |
179 | if (*value == '/') | 181 | if (*value == '/') |
180 | ctx.repo->readme = xstrdup(value); | 182 | ctx.repo->readme = xstrdup(value); |
181 | else | 183 | else |
182 | ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path, value)); | 184 | ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path, value)); |
183 | } else if (!strcmp(name, "include")) | 185 | } else if (!strcmp(name, "include")) |
184 | parse_configfile(value, config_cb); | 186 | parse_configfile(value, config_cb); |
185 | } | 187 | } |
186 | 188 | ||
187 | static void querystring_cb(const char *name, const char *value) | 189 | static void querystring_cb(const char *name, const char *value) |
188 | { | 190 | { |
189 | if (!value) | 191 | if (!value) |
190 | value = ""; | 192 | value = ""; |
191 | 193 | ||
192 | if (!strcmp(name,"r")) { | 194 | if (!strcmp(name,"r")) { |
193 | ctx.qry.repo = xstrdup(value); | 195 | ctx.qry.repo = xstrdup(value); |
194 | ctx.repo = cgit_get_repoinfo(value); | 196 | ctx.repo = cgit_get_repoinfo(value); |
195 | } else if (!strcmp(name, "p")) { | 197 | } else if (!strcmp(name, "p")) { |
196 | ctx.qry.page = xstrdup(value); | 198 | ctx.qry.page = xstrdup(value); |
197 | } else if (!strcmp(name, "url")) { | 199 | } else if (!strcmp(name, "url")) { |
198 | ctx.qry.url = xstrdup(value); | 200 | ctx.qry.url = xstrdup(value); |
199 | cgit_parse_url(value); | 201 | cgit_parse_url(value); |
200 | } else if (!strcmp(name, "qt")) { | 202 | } else if (!strcmp(name, "qt")) { |
201 | ctx.qry.grep = xstrdup(value); | 203 | ctx.qry.grep = xstrdup(value); |
202 | } else if (!strcmp(name, "q")) { | 204 | } else if (!strcmp(name, "q")) { |
203 | ctx.qry.search = xstrdup(value); | 205 | ctx.qry.search = xstrdup(value); |
204 | } else if (!strcmp(name, "h")) { | 206 | } else if (!strcmp(name, "h")) { |
205 | ctx.qry.head = xstrdup(value); | 207 | ctx.qry.head = xstrdup(value); |
206 | ctx.qry.has_symref = 1; | 208 | ctx.qry.has_symref = 1; |
207 | } else if (!strcmp(name, "id")) { | 209 | } else if (!strcmp(name, "id")) { |
208 | ctx.qry.sha1 = xstrdup(value); | 210 | ctx.qry.sha1 = xstrdup(value); |
209 | ctx.qry.has_sha1 = 1; | 211 | ctx.qry.has_sha1 = 1; |
210 | } else if (!strcmp(name, "id2")) { | 212 | } else if (!strcmp(name, "id2")) { |
211 | ctx.qry.sha2 = xstrdup(value); | 213 | ctx.qry.sha2 = xstrdup(value); |
212 | ctx.qry.has_sha1 = 1; | 214 | ctx.qry.has_sha1 = 1; |
213 | } else if (!strcmp(name, "ofs")) { | 215 | } else if (!strcmp(name, "ofs")) { |
214 | ctx.qry.ofs = atoi(value); | 216 | ctx.qry.ofs = atoi(value); |
215 | } else if (!strcmp(name, "path")) { | 217 | } else if (!strcmp(name, "path")) { |
216 | ctx.qry.path = trim_end(value, '/'); | 218 | ctx.qry.path = trim_end(value, '/'); |
217 | } else if (!strcmp(name, "name")) { | 219 | } else if (!strcmp(name, "name")) { |
218 | ctx.qry.name = xstrdup(value); | 220 | ctx.qry.name = xstrdup(value); |
219 | } else if (!strcmp(name, "mimetype")) { | 221 | } else if (!strcmp(name, "mimetype")) { |
220 | ctx.qry.mimetype = xstrdup(value); | 222 | ctx.qry.mimetype = xstrdup(value); |
221 | } else if (!strcmp(name, "s")){ | 223 | } else if (!strcmp(name, "s")){ |
222 | ctx.qry.sort = xstrdup(value); | 224 | ctx.qry.sort = xstrdup(value); |
223 | } else if (!strcmp(name, "showmsg")) { | 225 | } else if (!strcmp(name, "showmsg")) { |
224 | ctx.qry.showmsg = atoi(value); | 226 | ctx.qry.showmsg = atoi(value); |
225 | } else if (!strcmp(name, "period")) { | 227 | } else if (!strcmp(name, "period")) { |
226 | ctx.qry.period = xstrdup(value); | 228 | ctx.qry.period = xstrdup(value); |
227 | } | 229 | } |
228 | } | 230 | } |
229 | 231 | ||
230 | char *xstrdupn(const char *str) | 232 | char *xstrdupn(const char *str) |
231 | { | 233 | { |
232 | return (str ? xstrdup(str) : NULL); | 234 | return (str ? xstrdup(str) : NULL); |
233 | } | 235 | } |
234 | 236 | ||
235 | static void prepare_context(struct cgit_context *ctx) | 237 | static void prepare_context(struct cgit_context *ctx) |
236 | { | 238 | { |
237 | memset(ctx, 0, sizeof(ctx)); | 239 | memset(ctx, 0, sizeof(ctx)); |
238 | ctx->cfg.agefile = "info/web/last-modified"; | 240 | ctx->cfg.agefile = "info/web/last-modified"; |
239 | ctx->cfg.nocache = 0; | 241 | ctx->cfg.nocache = 0; |
240 | ctx->cfg.cache_size = 0; | 242 | ctx->cfg.cache_size = 0; |
241 | ctx->cfg.cache_dynamic_ttl = 5; | 243 | ctx->cfg.cache_dynamic_ttl = 5; |
242 | ctx->cfg.cache_max_create_time = 5; | 244 | ctx->cfg.cache_max_create_time = 5; |
243 | ctx->cfg.cache_repo_ttl = 5; | 245 | ctx->cfg.cache_repo_ttl = 5; |
244 | ctx->cfg.cache_root = CGIT_CACHE_ROOT; | 246 | ctx->cfg.cache_root = CGIT_CACHE_ROOT; |
245 | ctx->cfg.cache_root_ttl = 5; | 247 | ctx->cfg.cache_root_ttl = 5; |
246 | ctx->cfg.cache_scanrc_ttl = 15; | 248 | ctx->cfg.cache_scanrc_ttl = 15; |
247 | ctx->cfg.cache_static_ttl = -1; | 249 | ctx->cfg.cache_static_ttl = -1; |
248 | ctx->cfg.css = "/cgit.css"; | 250 | ctx->cfg.css = "/cgit.css"; |
249 | ctx->cfg.logo = "/cgit.png"; | 251 | ctx->cfg.logo = "/cgit.png"; |
250 | ctx->cfg.local_time = 0; | 252 | ctx->cfg.local_time = 0; |
251 | ctx->cfg.max_repo_count = 50; | 253 | ctx->cfg.max_repo_count = 50; |
252 | ctx->cfg.max_commit_count = 50; | 254 | ctx->cfg.max_commit_count = 50; |
253 | ctx->cfg.max_lock_attempts = 5; | 255 | ctx->cfg.max_lock_attempts = 5; |
254 | ctx->cfg.max_msg_len = 80; | 256 | ctx->cfg.max_msg_len = 80; |
255 | ctx->cfg.max_repodesc_len = 80; | 257 | ctx->cfg.max_repodesc_len = 80; |
256 | ctx->cfg.max_stats = 0; | 258 | ctx->cfg.max_stats = 0; |
257 | ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; | 259 | ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; |
258 | ctx->cfg.renamelimit = -1; | 260 | ctx->cfg.renamelimit = -1; |
259 | ctx->cfg.robots = "index, nofollow"; | 261 | ctx->cfg.robots = "index, nofollow"; |
260 | ctx->cfg.root_title = "Git repository browser"; | 262 | ctx->cfg.root_title = "Git repository browser"; |
261 | ctx->cfg.root_desc = "a fast webinterface for the git dscm"; | 263 | ctx->cfg.root_desc = "a fast webinterface for the git dscm"; |
262 | ctx->cfg.script_name = CGIT_SCRIPT_NAME; | 264 | ctx->cfg.script_name = CGIT_SCRIPT_NAME; |
263 | ctx->cfg.summary_branches = 10; | 265 | ctx->cfg.summary_branches = 10; |
264 | ctx->cfg.summary_log = 10; | 266 | ctx->cfg.summary_log = 10; |
265 | ctx->cfg.summary_tags = 10; | 267 | ctx->cfg.summary_tags = 10; |
266 | ctx->env.cgit_config = xstrdupn(getenv("CGIT_CONFIG")); | 268 | ctx->env.cgit_config = xstrdupn(getenv("CGIT_CONFIG")); |
267 | ctx->env.http_host = xstrdupn(getenv("HTTP_HOST")); | 269 | ctx->env.http_host = xstrdupn(getenv("HTTP_HOST")); |
diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 4d009f9..e99c9f7 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt | |||
@@ -222,192 +222,195 @@ root-title:: | |||
222 | 222 | ||
223 | scan-path:: | 223 | scan-path:: |
224 | A path which will be scanned for repositories. If caching is enabled, | 224 | A path which will be scanned for repositories. If caching is enabled, |
225 | the result will be cached as a cgitrc include-file in the cache | 225 | the result will be cached as a cgitrc include-file in the cache |
226 | directory. Default value: none. See also: cache-scanrc-ttl. | 226 | directory. Default value: none. See also: cache-scanrc-ttl. |
227 | 227 | ||
228 | section: | 228 | section: |
229 | The name of the current repository section - all repositories defined | 229 | The name of the current repository section - all repositories defined |
230 | after this option will inherit the current section name. Default value: | 230 | after this option will inherit the current section name. Default value: |
231 | none. | 231 | none. |
232 | 232 | ||
233 | snapshots:: | 233 | snapshots:: |
234 | Text which specifies the default set of snapshot formats generated by | 234 | Text which specifies the default set of snapshot formats generated by |
235 | cgit. The value is a space-separated list of zero or more of the | 235 | cgit. The value is a space-separated list of zero or more of the |
236 | values "tar", "tar.gz", "tar.bz2" and "zip". Default value: none. | 236 | values "tar", "tar.gz", "tar.bz2" and "zip". Default value: none. |
237 | 237 | ||
238 | source-filter:: | 238 | source-filter:: |
239 | Specifies a command which will be invoked to format plaintext blobs | 239 | Specifies a command which will be invoked to format plaintext blobs |
240 | in the tree view. The command will get the blob content on its STDIN | 240 | in the tree view. The command will get the blob content on its STDIN |
241 | and the name of the blob as its only command line argument. The STDOUT | 241 | and the name of the blob as its only command line argument. The STDOUT |
242 | from the command will be included verbatim as the blob contents, i.e. | 242 | from the command will be included verbatim as the blob contents, i.e. |
243 | this can be used to implement e.g. syntax highlighting. Default value: | 243 | this can be used to implement e.g. syntax highlighting. Default value: |
244 | none. | 244 | none. |
245 | 245 | ||
246 | summary-branches:: | 246 | summary-branches:: |
247 | Specifies the number of branches to display in the repository "summary" | 247 | Specifies the number of branches to display in the repository "summary" |
248 | view. Default value: "10". | 248 | view. Default value: "10". |
249 | 249 | ||
250 | summary-log:: | 250 | summary-log:: |
251 | Specifies the number of log entries to display in the repository | 251 | Specifies the number of log entries to display in the repository |
252 | "summary" view. Default value: "10". | 252 | "summary" view. Default value: "10". |
253 | 253 | ||
254 | summary-tags:: | 254 | summary-tags:: |
255 | Specifies the number of tags to display in the repository "summary" | 255 | Specifies the number of tags to display in the repository "summary" |
256 | view. Default value: "10". | 256 | view. Default value: "10". |
257 | 257 | ||
258 | virtual-root:: | 258 | virtual-root:: |
259 | Url which, if specified, will be used as root for all cgit links. It | 259 | Url which, if specified, will be used as root for all cgit links. It |
260 | will also cause cgit to generate 'virtual urls', i.e. urls like | 260 | will also cause cgit to generate 'virtual urls', i.e. urls like |
261 | '/cgit/tree/README' as opposed to '?r=cgit&p=tree&path=README'. Default | 261 | '/cgit/tree/README' as opposed to '?r=cgit&p=tree&path=README'. Default |
262 | value: none. | 262 | value: none. |
263 | NOTE: cgit has recently learned how to use PATH_INFO to achieve the | 263 | NOTE: cgit has recently learned how to use PATH_INFO to achieve the |
264 | same kind of virtual urls, so this option will probably be deprecated. | 264 | same kind of virtual urls, so this option will probably be deprecated. |
265 | 265 | ||
266 | REPOSITORY SETTINGS | 266 | REPOSITORY SETTINGS |
267 | ------------------- | 267 | ------------------- |
268 | repo.about-filter:: | 268 | repo.about-filter:: |
269 | Override the default about-filter. Default value: <about-filter>. | 269 | Override the default about-filter. Default value: <about-filter>. |
270 | 270 | ||
271 | repo.clone-url:: | 271 | repo.clone-url:: |
272 | A list of space-separated urls which can be used to clone this repo. | 272 | A list of space-separated urls which can be used to clone this repo. |
273 | Default value: none. | 273 | Default value: none. |
274 | 274 | ||
275 | repo.commit-filter:: | 275 | repo.commit-filter:: |
276 | Override the default commit-filter. Default value: <commit-filter>. | 276 | Override the default commit-filter. Default value: <commit-filter>. |
277 | 277 | ||
278 | repo.defbranch:: | 278 | repo.defbranch:: |
279 | The name of the default branch for this repository. If no such branch | 279 | The name of the default branch for this repository. If no such branch |
280 | exists in the repository, the first branch name (when sorted) is used | 280 | exists in the repository, the first branch name (when sorted) is used |
281 | as default instead. Default value: "master". | 281 | as default instead. Default value: "master". |
282 | 282 | ||
283 | repo.desc:: | 283 | repo.desc:: |
284 | The value to show as repository description. Default value: none. | 284 | The value to show as repository description. Default value: none. |
285 | 285 | ||
286 | repo.enable-log-filecount:: | 286 | repo.enable-log-filecount:: |
287 | A flag which can be used to disable the global setting | 287 | A flag which can be used to disable the global setting |
288 | `enable-log-filecount'. Default value: none. | 288 | `enable-log-filecount'. Default value: none. |
289 | 289 | ||
290 | repo.enable-log-linecount:: | 290 | repo.enable-log-linecount:: |
291 | A flag which can be used to disable the global setting | 291 | A flag which can be used to disable the global setting |
292 | `enable-log-linecount'. Default value: none. | 292 | `enable-log-linecount'. Default value: none. |
293 | 293 | ||
294 | repo.max-stats:: | 294 | repo.max-stats:: |
295 | Override the default maximum statistics period. Valid values are equal | 295 | Override the default maximum statistics period. Valid values are equal |
296 | to the values specified for the global "max-stats" setting. Default | 296 | to the values specified for the global "max-stats" setting. Default |
297 | value: none. | 297 | value: none. |
298 | 298 | ||
299 | repo.name:: | 299 | repo.name:: |
300 | The value to show as repository name. Default value: <repo.url>. | 300 | The value to show as repository name. Default value: <repo.url>. |
301 | 301 | ||
302 | repo.owner:: | 302 | repo.owner:: |
303 | A value used to identify the owner of the repository. Default value: | 303 | A value used to identify the owner of the repository. Default value: |
304 | none. | 304 | none. |
305 | 305 | ||
306 | repo.path:: | 306 | repo.path:: |
307 | An absolute path to the repository directory. For non-bare repositories | 307 | An absolute path to the repository directory. For non-bare repositories |
308 | this is the .git-directory. Default value: none. | 308 | this is the .git-directory. Default value: none. |
309 | 309 | ||
310 | repo.readme:: | 310 | repo.readme:: |
311 | A path (relative to <repo.path>) which specifies a file to include | 311 | A path (relative to <repo.path>) which specifies a file to include |
312 | verbatim as the "About" page for this repo. Default value: none. | 312 | verbatim as the "About" page for this repo. Default value: none. |
313 | 313 | ||
314 | repo.snapshots:: | 314 | repo.snapshots:: |
315 | A mask of allowed snapshot-formats for this repo, restricted by the | 315 | A mask of allowed snapshot-formats for this repo, restricted by the |
316 | "snapshots" global setting. Default value: <snapshots>. | 316 | "snapshots" global setting. Default value: <snapshots>. |
317 | 317 | ||
318 | repo.section:: | ||
319 | Override the current section for this repository. Default value: none. | ||
320 | |||
318 | repo.source-filter:: | 321 | repo.source-filter:: |
319 | Override the default source-filter. Default value: <source-filter>. | 322 | Override the default source-filter. Default value: <source-filter>. |
320 | 323 | ||
321 | repo.url:: | 324 | repo.url:: |
322 | The relative url used to access the repository. This must be the first | 325 | The relative url used to access the repository. This must be the first |
323 | setting specified for each repo. Default value: none. | 326 | setting specified for each repo. Default value: none. |
324 | 327 | ||
325 | 328 | ||
326 | EXAMPLE CGITRC FILE | 329 | EXAMPLE CGITRC FILE |
327 | ------------------- | 330 | ------------------- |
328 | 331 | ||
329 | .... | 332 | .... |
330 | # Enable caching of up to 1000 output entriess | 333 | # Enable caching of up to 1000 output entriess |
331 | cache-size=1000 | 334 | cache-size=1000 |
332 | 335 | ||
333 | 336 | ||
334 | # Specify some default clone prefixes | 337 | # Specify some default clone prefixes |
335 | clone-prefix=git://foobar.com ssh://foobar.com/pub/git http://foobar.com/git | 338 | clone-prefix=git://foobar.com ssh://foobar.com/pub/git http://foobar.com/git |
336 | 339 | ||
337 | # Specify the css url | 340 | # Specify the css url |
338 | css=/css/cgit.css | 341 | css=/css/cgit.css |
339 | 342 | ||
340 | 343 | ||
341 | # Show extra links for each repository on the index page | 344 | # Show extra links for each repository on the index page |
342 | enable-index-links=1 | 345 | enable-index-links=1 |
343 | 346 | ||
344 | 347 | ||
345 | # Show number of affected files per commit on the log pages | 348 | # Show number of affected files per commit on the log pages |
346 | enable-log-filecount=1 | 349 | enable-log-filecount=1 |
347 | 350 | ||
348 | 351 | ||
349 | # Show number of added/removed lines per commit on the log pages | 352 | # Show number of added/removed lines per commit on the log pages |
350 | enable-log-linecount=1 | 353 | enable-log-linecount=1 |
351 | 354 | ||
352 | 355 | ||
353 | # Add a cgit favicon | 356 | # Add a cgit favicon |
354 | favicon=/favicon.ico | 357 | favicon=/favicon.ico |
355 | 358 | ||
356 | 359 | ||
357 | # Use a custom logo | 360 | # Use a custom logo |
358 | logo=/img/mylogo.png | 361 | logo=/img/mylogo.png |
359 | 362 | ||
360 | 363 | ||
361 | # Enable statistics per week, month and quarter | 364 | # Enable statistics per week, month and quarter |
362 | max-stats=quarter | 365 | max-stats=quarter |
363 | 366 | ||
364 | 367 | ||
365 | # Set the title and heading of the repository index page | 368 | # Set the title and heading of the repository index page |
366 | root-title=foobar.com git repositories | 369 | root-title=foobar.com git repositories |
367 | 370 | ||
368 | 371 | ||
369 | # Set a subheading for the repository index page | 372 | # Set a subheading for the repository index page |
370 | root-desc=tracking the foobar development | 373 | root-desc=tracking the foobar development |
371 | 374 | ||
372 | 375 | ||
373 | # Include some more info about foobar.com on the index page | 376 | # Include some more info about foobar.com on the index page |
374 | root-readme=/var/www/htdocs/about.html | 377 | root-readme=/var/www/htdocs/about.html |
375 | 378 | ||
376 | 379 | ||
377 | # Allow download of tar.gz, tar.bz2 and zip-files | 380 | # Allow download of tar.gz, tar.bz2 and zip-files |
378 | snapshots=tar.gz tar.bz2 zip | 381 | snapshots=tar.gz tar.bz2 zip |
379 | 382 | ||
380 | 383 | ||
381 | ## | 384 | ## |
382 | ## List of common mimetypes | 385 | ## List of common mimetypes |
383 | ## | 386 | ## |
384 | 387 | ||
385 | mimetype.git=image/git | 388 | mimetype.git=image/git |
386 | mimetype.html=text/html | 389 | mimetype.html=text/html |
387 | mimetype.jpg=image/jpeg | 390 | mimetype.jpg=image/jpeg |
388 | mimetype.jpeg=image/jpeg | 391 | mimetype.jpeg=image/jpeg |
389 | mimetype.pdf=application/pdf | 392 | mimetype.pdf=application/pdf |
390 | mimetype.png=image/png | 393 | mimetype.png=image/png |
391 | mimetype.svg=image/svg+xml | 394 | mimetype.svg=image/svg+xml |
392 | 395 | ||
393 | 396 | ||
394 | ## | 397 | ## |
395 | ## List of repositories. | 398 | ## List of repositories. |
396 | ## PS: Any repositories listed when repo.group is unset will not be | 399 | ## PS: Any repositories listed when repo.group is unset will not be |
397 | ## displayed under a group heading | 400 | ## displayed under a group heading |
398 | ## PPS: This list could be kept in a different file (e.g. '/etc/cgitrepos') | 401 | ## PPS: This list could be kept in a different file (e.g. '/etc/cgitrepos') |
399 | ## and included like this: | 402 | ## and included like this: |
400 | ## include=/etc/cgitrepos | 403 | ## include=/etc/cgitrepos |
401 | ## | 404 | ## |
402 | 405 | ||
403 | 406 | ||
404 | repo.url=foo | 407 | repo.url=foo |
405 | repo.path=/pub/git/foo.git | 408 | repo.path=/pub/git/foo.git |
406 | repo.desc=the master foo repository | 409 | repo.desc=the master foo repository |
407 | repo.owner=fooman@foobar.com | 410 | repo.owner=fooman@foobar.com |
408 | repo.readme=info/web/about.html | 411 | repo.readme=info/web/about.html |
409 | 412 | ||
410 | 413 | ||
411 | repo.url=bar | 414 | repo.url=bar |
412 | repo.path=/pub/git/bar.git | 415 | repo.path=/pub/git/bar.git |
413 | repo.desc=the bars for your foo | 416 | repo.desc=the bars for your foo |