-rw-r--r-- | cgit.c | 2 | ||||
-rw-r--r-- | cgitrc.5.txt | 3 |
2 files changed, 5 insertions, 0 deletions
@@ -108,128 +108,130 @@ void config_cb(const char *name, const char *value) | |||
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) |
diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 4d009f9..e99c9f7 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt | |||
@@ -254,128 +254,131 @@ summary-log:: | |||
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 | ## |