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]); |
