diff options
-rw-r--r-- | cgit.c | 14 | ||||
-rw-r--r-- | cgit.h | 2 | ||||
-rw-r--r-- | cgitrc.5.txt | 46 | ||||
-rw-r--r-- | shared.c | 1 | ||||
-rw-r--r-- | ui-refs.c | 5 |
5 files changed, 46 insertions, 22 deletions
@@ -84,7 +84,12 @@ static void repo_config(struct cgit_repo *repo, const char *name, const char *va | |||
84 | repo->enable_remote_branches = atoi(value); | 84 | repo->enable_remote_branches = atoi(value); |
85 | else if (!strcmp(name, "enable-subject-links")) | 85 | else if (!strcmp(name, "enable-subject-links")) |
86 | repo->enable_subject_links = atoi(value); | 86 | repo->enable_subject_links = atoi(value); |
87 | else if (!strcmp(name, "commit-sort")) { | 87 | else if (!strcmp(name, "branch-sort")) { |
88 | if (!strcmp(value, "age")) | ||
89 | repo->branch_sort = 1; | ||
90 | if (!strcmp(value, "name")) | ||
91 | repo->branch_sort = 0; | ||
92 | } else if (!strcmp(name, "commit-sort")) { | ||
88 | if (!strcmp(value, "date")) | 93 | if (!strcmp(value, "date")) |
89 | repo->commit_sort = 1; | 94 | repo->commit_sort = 1; |
90 | if (!strcmp(value, "topo")) | 95 | if (!strcmp(value, "topo")) |
@@ -271,6 +276,11 @@ static void config_cb(const char *name, const char *value) | |||
271 | ctx.cfg.commit_sort = 1; | 276 | ctx.cfg.commit_sort = 1; |
272 | if (!strcmp(value, "topo")) | 277 | if (!strcmp(value, "topo")) |
273 | ctx.cfg.commit_sort = 2; | 278 | ctx.cfg.commit_sort = 2; |
279 | } else if (!strcmp(name, "branch-sort")) { | ||
280 | if (!strcmp(value, "age")) | ||
281 | ctx.cfg.branch_sort = 1; | ||
282 | if (!strcmp(value, "name")) | ||
283 | ctx.cfg.branch_sort = 0; | ||
274 | } else if (!prefixcmp(name, "mimetype.")) | 284 | } else if (!prefixcmp(name, "mimetype.")) |
275 | add_mimetype(name + 9, value); | 285 | add_mimetype(name + 9, value); |
276 | else if (!strcmp(name, "include")) | 286 | else if (!strcmp(name, "include")) |
@@ -345,6 +355,8 @@ static void prepare_context(struct cgit_context *ctx) | |||
345 | ctx->cfg.cache_scanrc_ttl = 15; | 355 | ctx->cfg.cache_scanrc_ttl = 15; |
346 | ctx->cfg.cache_static_ttl = -1; | 356 | ctx->cfg.cache_static_ttl = -1; |
347 | ctx->cfg.case_sensitive_sort = 1; | 357 | ctx->cfg.case_sensitive_sort = 1; |
358 | ctx->cfg.branch_sort = 0; | ||
359 | ctx->cfg.commit_sort = 0; | ||
348 | ctx->cfg.css = "/cgit.css"; | 360 | ctx->cfg.css = "/cgit.css"; |
349 | ctx->cfg.logo = "/cgit.png"; | 361 | ctx->cfg.logo = "/cgit.png"; |
350 | ctx->cfg.local_time = 0; | 362 | ctx->cfg.local_time = 0; |
@@ -85,6 +85,7 @@ struct cgit_repo { | |||
85 | int enable_remote_branches; | 85 | int enable_remote_branches; |
86 | int enable_subject_links; | 86 | int enable_subject_links; |
87 | int max_stats; | 87 | int max_stats; |
88 | int branch_sort; | ||
88 | int commit_sort; | 89 | int commit_sort; |
89 | time_t mtime; | 90 | time_t mtime; |
90 | struct cgit_filter *about_filter; | 91 | struct cgit_filter *about_filter; |
@@ -234,6 +235,7 @@ struct cgit_config { | |||
234 | int summary_log; | 235 | int summary_log; |
235 | int summary_tags; | 236 | int summary_tags; |
236 | int ssdiff; | 237 | int ssdiff; |
238 | int branch_sort; | ||
237 | int commit_sort; | 239 | int commit_sort; |
238 | struct string_list mimetypes; | 240 | struct string_list mimetypes; |
239 | struct cgit_filter *about_filter; | 241 | struct cgit_filter *about_filter; |
diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 4d27d9f..39b031e 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt | |||
@@ -40,6 +40,11 @@ agefile:: | |||
40 | function in libgit. Recommended timestamp-format is "yyyy-mm-dd | 40 | function in libgit. Recommended timestamp-format is "yyyy-mm-dd |
41 | hh:mm:ss". Default value: "info/web/last-modified". | 41 | hh:mm:ss". Default value: "info/web/last-modified". |
42 | 42 | ||
43 | branch-sort:: | ||
44 | Flag which, when set to "age", enables date ordering in the branch ref | ||
45 | list, and when set to "name" enables ordering by branch name. Default | ||
46 | value: "name". | ||
47 | |||
43 | cache-root:: | 48 | cache-root:: |
44 | Path used to store the cgit cache entries. Default value: | 49 | Path used to store the cgit cache entries. Default value: |
45 | "/var/cache/cgit". See also: "MACRO EXPANSION". | 50 | "/var/cache/cgit". See also: "MACRO EXPANSION". |
@@ -92,6 +97,12 @@ commit-filter:: | |||
92 | be used to implement bugtracker integration. Default value: none. | 97 | be used to implement bugtracker integration. Default value: none. |
93 | See also: "FILTER API". | 98 | See also: "FILTER API". |
94 | 99 | ||
100 | commit-sort:: | ||
101 | Flag which, when set to "date", enables strict date ordering in the | ||
102 | commit log, and when set to "topo" enables strict topological | ||
103 | ordering. If unset, the default ordering of "git log" is used. Default | ||
104 | value: unset. | ||
105 | |||
95 | css:: | 106 | css:: |
96 | Url which specifies the css document to include in all cgit pages. | 107 | Url which specifies the css document to include in all cgit pages. |
97 | Default value: "/cgit.css". | 108 | Default value: "/cgit.css". |
@@ -196,12 +207,6 @@ local-time:: | |||
196 | Flag which, if set to "1", makes cgit print commit and tag times in the | 207 | Flag which, if set to "1", makes cgit print commit and tag times in the |
197 | servers timezone. Default value: "0". | 208 | servers timezone. Default value: "0". |
198 | 209 | ||
199 | commit-sort:: | ||
200 | Flag which, when set to "date", enables strict date ordering in the | ||
201 | commit log, and when set to "topo" enables strict topological | ||
202 | ordering. If unset, the default ordering of "git log" is used. Default | ||
203 | value: unset. | ||
204 | |||
205 | logo:: | 210 | logo:: |
206 | Url which specifies the source of an image which will be used as a logo | 211 | Url which specifies the source of an image which will be used as a logo |
207 | on all cgit pages. Default value: "/cgit.png". | 212 | on all cgit pages. Default value: "/cgit.png". |
@@ -299,6 +304,12 @@ repo.group:: | |||
299 | Legacy alias for "section". This option is deprecated and will not be | 304 | Legacy alias for "section". This option is deprecated and will not be |
300 | supported in cgit-1.0. | 305 | supported in cgit-1.0. |
301 | 306 | ||
307 | repository-sort:: | ||
308 | The way in which repositories in each section are sorted. Valid values | ||
309 | are "name" for sorting by the repo name or "age" for sorting by the | ||
310 | most recently updated repository. Default value: "name". See also: | ||
311 | section, case-sensitive-sort, section-sort. | ||
312 | |||
302 | robots:: | 313 | robots:: |
303 | Text used as content for the "robots" meta-tag. Default value: | 314 | Text used as content for the "robots" meta-tag. Default value: |
304 | "index, nofollow". | 315 | "index, nofollow". |
@@ -339,12 +350,6 @@ section:: | |||
339 | after this option will inherit the current section name. Default value: | 350 | after this option will inherit the current section name. Default value: |
340 | none. | 351 | none. |
341 | 352 | ||
342 | repository-sort:: | ||
343 | The way in which repositories in each section are sorted. Valid values | ||
344 | are "name" for sorting by the repo name or "age" for sorting by the | ||
345 | most recently updated repository. Default value: "name". See also: | ||
346 | section, case-sensitive-sort, section-sort. | ||
347 | |||
348 | section-sort:: | 353 | section-sort:: |
349 | Flag which, when set to "1", will sort the sections on the repository | 354 | Flag which, when set to "1", will sort the sections on the repository |
350 | listing by name. Set this flag to "0" if the order in the cgitrc file should | 355 | listing by name. Set this flag to "0" if the order in the cgitrc file should |
@@ -409,6 +414,11 @@ repo.about-filter:: | |||
409 | Override the default about-filter. Default value: none. See also: | 414 | Override the default about-filter. Default value: none. See also: |
410 | "enable-filter-overrides". See also: "FILTER API". | 415 | "enable-filter-overrides". See also: "FILTER API". |
411 | 416 | ||
417 | repo.branch-sort:: | ||
418 | Flag which, when set to "age", enables date ordering in the branch ref | ||
419 | list, and when set to "name" enables ordering by branch name. Default | ||
420 | value: "name". | ||
421 | |||
412 | repo.clone-url:: | 422 | repo.clone-url:: |
413 | A list of space-separated urls which can be used to clone this repo. | 423 | A list of space-separated urls which can be used to clone this repo. |
414 | Default value: none. See also: "MACRO EXPANSION". | 424 | Default value: none. See also: "MACRO EXPANSION". |
@@ -417,6 +427,12 @@ repo.commit-filter:: | |||
417 | Override the default commit-filter. Default value: none. See also: | 427 | Override the default commit-filter. Default value: none. See also: |
418 | "enable-filter-overrides". See also: "FILTER API". | 428 | "enable-filter-overrides". See also: "FILTER API". |
419 | 429 | ||
430 | repo.commit-sort:: | ||
431 | Flag which, when set to "date", enables strict date ordering in the | ||
432 | commit log, and when set to "topo" enables strict topological | ||
433 | ordering. If unset, the default ordering of "git log" is used. Default | ||
434 | value: unset. | ||
435 | |||
420 | repo.defbranch:: | 436 | repo.defbranch:: |
421 | The name of the default branch for this repository. If no such branch | 437 | The name of the default branch for this repository. If no such branch |
422 | exists in the repository, the first branch name (when sorted) is used | 438 | exists in the repository, the first branch name (when sorted) is used |
@@ -446,12 +462,6 @@ repo.enable-subject-links:: | |||
446 | A flag which can be used to override the global setting | 462 | A flag which can be used to override the global setting |
447 | `enable-subject-links'. Default value: none. | 463 | `enable-subject-links'. Default value: none. |
448 | 464 | ||
449 | repo.commit-sort:: | ||
450 | Flag which, when set to "date", enables strict date ordering in the | ||
451 | commit log, and when set to "topo" enables strict topological | ||
452 | ordering. If unset, the default ordering of "git log" is used. Default | ||
453 | value: unset. | ||
454 | |||
455 | repo.logo:: | 465 | repo.logo:: |
456 | Url which specifies the source of an image which will be used as a logo | 466 | Url which specifies the source of an image which will be used as a logo |
457 | on this repo's pages. Default value: global logo. | 467 | on this repo's pages. Default value: global logo. |
@@ -63,6 +63,7 @@ struct cgit_repo *cgit_add_repo(const char *url) | |||
63 | ret->enable_remote_branches = ctx.cfg.enable_remote_branches; | 63 | ret->enable_remote_branches = ctx.cfg.enable_remote_branches; |
64 | ret->enable_subject_links = ctx.cfg.enable_subject_links; | 64 | ret->enable_subject_links = ctx.cfg.enable_subject_links; |
65 | ret->max_stats = ctx.cfg.max_stats; | 65 | ret->max_stats = ctx.cfg.max_stats; |
66 | ret->branch_sort = ctx.cfg.branch_sort; | ||
66 | ret->commit_sort = ctx.cfg.commit_sort; | 67 | ret->commit_sort = ctx.cfg.commit_sort; |
67 | ret->module_link = ctx.cfg.module_link; | 68 | ret->module_link = ctx.cfg.module_link; |
68 | ret->readme = ctx.cfg.readme; | 69 | ret->readme = ctx.cfg.readme; |
@@ -197,10 +197,9 @@ void cgit_print_branches(int maxcount) | |||
197 | if (maxcount == 0 || maxcount > list.count) | 197 | if (maxcount == 0 || maxcount > list.count) |
198 | maxcount = list.count; | 198 | maxcount = list.count; |
199 | 199 | ||
200 | if (maxcount < list.count) { | 200 | qsort(list.refs, list.count, sizeof(*list.refs), cmp_branch_age); |
201 | qsort(list.refs, list.count, sizeof(*list.refs), cmp_branch_age); | 201 | if (ctx.repo->branch_sort == 0) |
202 | qsort(list.refs, maxcount, sizeof(*list.refs), cmp_ref_name); | 202 | qsort(list.refs, maxcount, sizeof(*list.refs), cmp_ref_name); |
203 | } | ||
204 | 203 | ||
205 | for (i = 0; i < maxcount; i++) | 204 | for (i = 0; i < maxcount; i++) |
206 | print_branch(list.refs[i]); | 205 | print_branch(list.refs[i]); |