summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2007-10-27 11:34:17 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2007-10-27 11:34:17 (UTC)
commitb4d4a25aa481aa3ac8ad69df4dfa53eaa5de6173 (patch) (side-by-side diff)
treeeac36573ba5ed7965d2b83f931a493aaef96307c
parentdd0f27eb36e737261b57d6ebcbd9fe20e559470d (diff)
downloadcgit-b4d4a25aa481aa3ac8ad69df4dfa53eaa5de6173.zip
cgit-b4d4a25aa481aa3ac8ad69df4dfa53eaa5de6173.tar.gz
cgit-b4d4a25aa481aa3ac8ad69df4dfa53eaa5de6173.tar.bz2
Cleanup code introduced by the filter-refs topic
The functions used to print branches and tags were only half-done and somewhat confused. Fix it. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ui-summary.c49
1 files changed, 19 insertions, 30 deletions
diff --git a/ui-summary.c b/ui-summary.c
index 016fea2..178e959 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -45,41 +45,29 @@ static int cmp_tag_age(const void *a, const void *b)
struct refinfo *r1 = *(struct refinfo **)a;
struct refinfo *r2 = *(struct refinfo **)b;
return cmp_age(r1->tag->tagger_date, r2->tag->tagger_date);
}
-static void cgit_print_branch(struct refinfo *ref)
+static int print_branch(struct refinfo *ref)
{
- struct commit *commit;
- struct commitinfo *info;
+ struct commitinfo *info = ref->commit;
char *name = (char *)ref->refname;
- commit = lookup_commit(ref->object->sha1);
- // object is not really parsed at this point, because of some fallout
- // from previous calls to git functions in cgit_print_log()
- commit->object.parsed = 0;
- if (commit && !parse_commit(commit)){
- info = cgit_parse_commit(commit);
- html("<tr><td>");
- cgit_log_link(name, NULL, NULL, name, NULL, NULL, 0);
- html("</td><td>");
- cgit_print_age(commit->date, -1, NULL);
- html("</td><td>");
- html_txt(info->author);
- html("</td><td>");
- cgit_commit_link(info->subject, NULL, NULL, name, NULL);
- html("</td></tr>\n");
- cgit_free_commitinfo(info);
- } else {
- html("<tr><td>");
- html_txt(name);
- html("</td><td colspan='3'>");
- htmlf("*** bad ref %s ***", sha1_to_hex(ref->object->sha1));
- html("</td></tr>\n");
- }
+ if (!info)
+ return 1;
+ html("<tr><td>");
+ cgit_log_link(name, NULL, NULL, name, NULL, NULL, 0);
+ html("</td><td>");
+ cgit_print_age(info->commit->date, -1, NULL);
+ html("</td><td>");
+ html_txt(info->author);
+ html("</td><td>");
+ cgit_commit_link(info->subject, NULL, NULL, name, NULL);
+ html("</td></tr>\n");
+ return 0;
}
static void print_tag_header()
{
html("<tr class='nohover'><th class='left'>Tag</th>"
"<th class='left'>Age</th>"
@@ -92,15 +80,16 @@ static int print_tag(struct refinfo *ref)
{
struct tag *tag;
struct taginfo *info;
char *url, *name = (char *)ref->refname;
if (ref->object->type == OBJ_TAG) {
- tag = lookup_tag(ref->object->sha1);
- if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag)))
- return 2;
+ tag = (struct tag *)ref->object;
+ info = ref->tag;
+ if (!tag || !info)
+ return 1;
html("<tr><td>");
url = cgit_pageurl(cgit_query_repo, "tag",
fmt("id=%s", name));
html_link_open(url, NULL, NULL);
html_txt(name);
html_link_close();
@@ -193,13 +182,13 @@ void cgit_print_branches(int maxcount)
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]);
+ print_branch(list.refs[i]);
if (maxcount < list.count)
print_refs_link("heads");
}
void cgit_print_tags(int maxcount)