Add support for config param summary-branches This parameter can be used to specify max number of branches to show on the summary page (if not all branches will be displayed, the "most idle" branches are the ones to be pruned). The default value for this parameter is 0, which disables the pruning. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Lars Hjemli hjemli@gmail.com
Sat, 27 Oct 2007 10:13:42 +0200
3 files changed,
32 insertions(+),
3 deletions(-)
M
ui-summary.c
→
ui-summary.c
@@ -24,6 +24,22 @@
return -1; } +static int cmp_ref_name(const void *a, const void *b) +{ + struct refinfo *r1 = *(struct refinfo **)a; + struct refinfo *r2 = *(struct refinfo **)b; + + return strcmp(r1->refname, r2->refname); +} + +static int cmp_branch_age(const void *a, const void *b) +{ + struct refinfo *r1 = *(struct refinfo **)a; + struct refinfo *r2 = *(struct refinfo **)b; + + return cmp_age(r1->commit->committer_date, r2->commit->committer_date); +} + static int cmp_tag_age(const void *a, const void *b) { struct refinfo *r1 = *(struct refinfo **)a;@@ -150,7 +166,7 @@ html("</td></tr>");
return 0; } -static void cgit_print_branches() +static void cgit_print_branches(int maxcount) { struct reflist list; int i;@@ -163,7 +179,16 @@
list.refs = NULL; list.alloc = list.count = 0; for_each_branch_ref(cgit_refs_cb, &list); - for(i=0; i<list.count; i++) + + if (maxcount == 0 || maxcount > list.count) + maxcount = list.count; + + if (maxcount < list.count) { + qsort(list.refs, list.count, sizeof(*list.refs), cmp_branch_age); + qsort(list.refs, maxcount, sizeof(*list.refs), cmp_ref_name); + } + + for(i=0; i<maxcount; i++) cgit_print_branch(list.refs[i]); }@@ -213,7 +238,7 @@ cgit_print_log(cgit_query_head, 0, cgit_summary_log, NULL, NULL, 0);
html("<table class='list nowrap'>"); if (cgit_summary_log > 0) html("<tr class='nohover'><td colspan='4'> </td></tr>"); - cgit_print_branches(); + cgit_print_branches(cgit_summary_branches); html("<tr class='nohover'><td colspan='4'> </td></tr>"); cgit_print_tags(cgit_summary_tags); html("</table>");