- html("<tr><th>tree</th><td colspan='2' class='sha1'><a href='");
- html_attr(cgit_pageurl(cgit_query_repo, "tree", fmt("id=%s", sha1_to_hex(commit->tree->object.sha1))));
- htmlf("'>%s</a></td></tr>\n", sha1_to_hex(commit->tree->object.sha1));
-
- for (p = commit->parents; p ; p = p->next) {
- html("<tr><th>parent</th><td colspan='2' class='sha1'><a href='");
- html_attr(cgit_pageurl(cgit_query_repo, "commit", fmt("id=%s", sha1_to_hex(p->item->object.sha1))));
- htmlf("'>%s</a></td></tr>\n",
- sha1_to_hex(p->item->object.sha1));
+ for (p = commit->parents; p ; p = p->next) {
+ parent = lookup_commit_reference(p->item->object.sha1);
+ if (!parent) {
+ html("<tr><td colspan='3'>");
+ cgit_print_error("Error reading parent commit");
+ html("</td></tr>");
+ continue;
+ }
+ html("<tr><th>parent</th>"
+ "<td colspan='2' class='sha1'>");
+ cgit_commit_link(sha1_to_hex(p->item->object.sha1), NULL, NULL,
+ ctx.qry.head, sha1_to_hex(p->item->object.sha1));
+ html(" (");
+ cgit_diff_link("diff", NULL, NULL, ctx.qry.head, hex,
+ sha1_to_hex(p->item->object.sha1), NULL);
+ html(")</td></tr>");
+ parents++;
+ }
+ if (ctx.repo->snapshots) {
+ html("<tr><th>download</th><td colspan='2' class='sha1'>");
+ cgit_print_snapshot_links(ctx.qry.repo, ctx.qry.head,
+ hex, ctx.repo->snapshots);
+ html("</td></tr>");