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>
This commit is contained in:
Lars Hjemli 2007-10-27 10:13:42 +02:00
父節點 f6310fec78
當前提交 763a6a09de
共有 3 個文件被更改,包括 32 次插入3 次删除

1
cgit.h
查看文件

@ -144,6 +144,7 @@ extern int cgit_cache_static_ttl;
extern int cgit_cache_max_create_time; extern int cgit_cache_max_create_time;
extern int cgit_summary_log; extern int cgit_summary_log;
extern int cgit_summary_tags; extern int cgit_summary_tags;
extern int cgit_summary_branches;
extern int cgit_max_msg_len; extern int cgit_max_msg_len;
extern int cgit_max_repodesc_len; extern int cgit_max_repodesc_len;

查看文件

@ -39,6 +39,7 @@ int cgit_cache_static_ttl = -1;
int cgit_cache_max_create_time = 5; int cgit_cache_max_create_time = 5;
int cgit_summary_log = 0; int cgit_summary_log = 0;
int cgit_summary_tags = 0; int cgit_summary_tags = 0;
int cgit_summary_branches = 0;
int cgit_renamelimit = -1; int cgit_renamelimit = -1;
int cgit_max_msg_len = 60; int cgit_max_msg_len = 60;
@ -182,6 +183,8 @@ void cgit_global_config_cb(const char *name, const char *value)
cgit_max_commit_count = atoi(value); cgit_max_commit_count = atoi(value);
else if (!strcmp(name, "summary-log")) else if (!strcmp(name, "summary-log"))
cgit_summary_log = atoi(value); cgit_summary_log = atoi(value);
else if (!strcmp(name, "summary-branches"))
cgit_summary_branches = atoi(value);
else if (!strcmp(name, "summary-tags")) else if (!strcmp(name, "summary-tags"))
cgit_summary_tags = atoi(value); cgit_summary_tags = atoi(value);
else if (!strcmp(name, "agefile")) else if (!strcmp(name, "agefile"))

查看文件

@ -24,6 +24,22 @@ static int cmp_age(int age1, int age2)
return -1; 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) static int cmp_tag_age(const void *a, const void *b)
{ {
struct refinfo *r1 = *(struct refinfo **)a; struct refinfo *r1 = *(struct refinfo **)a;
@ -150,7 +166,7 @@ static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1,
return 0; return 0;
} }
static void cgit_print_branches() static void cgit_print_branches(int maxcount)
{ {
struct reflist list; struct reflist list;
int i; int i;
@ -163,7 +179,16 @@ static void cgit_print_branches()
list.refs = NULL; list.refs = NULL;
list.alloc = list.count = 0; list.alloc = list.count = 0;
for_each_branch_ref(cgit_refs_cb, &list); 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]); cgit_print_branch(list.refs[i]);
} }
@ -213,7 +238,7 @@ void cgit_print_summary()
html("<table class='list nowrap'>"); html("<table class='list nowrap'>");
if (cgit_summary_log > 0) if (cgit_summary_log > 0)
html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>"); html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");
cgit_print_branches(); cgit_print_branches(cgit_summary_branches);
html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>"); html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");
cgit_print_tags(cgit_summary_tags); cgit_print_tags(cgit_summary_tags);
html("</table>"); html("</table>");