summaryrefslogtreecommitdiffabout
path: root/ui-commit.c
Unidiff
Diffstat (limited to 'ui-commit.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-commit.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/ui-commit.c b/ui-commit.c
index f654208..8916212 100644
--- a/ui-commit.c
+++ b/ui-commit.c
@@ -4,62 +4,63 @@
4 * 4 *
5 * Licensed under GNU General Public License v2 5 * Licensed under GNU General Public License v2
6 * (see COPYING for full license text) 6 * (see COPYING for full license text)
7 */ 7 */
8 8
9#include "cgit.h" 9#include "cgit.h"
10 10
11void cgit_print_commit(const char *hex) 11void cgit_print_commit(const char *hex)
12{ 12{
13 struct commit *commit; 13 struct commit *commit;
14 struct commitinfo *info; 14 struct commitinfo *info;
15 struct commit_list *p; 15 struct commit_list *p;
16
17 unsigned char sha1[20]; 16 unsigned char sha1[20];
17 char *query;
18 18
19 if (get_sha1(hex, sha1)) { 19 if (get_sha1(hex, sha1)) {
20 cgit_print_error(fmt("Bad object id: %s", hex)); 20 cgit_print_error(fmt("Bad object id: %s", hex));
21 return; 21 return;
22 } 22 }
23
24 commit = lookup_commit_reference(sha1); 23 commit = lookup_commit_reference(sha1);
25 if (!commit) { 24 if (!commit) {
26 cgit_print_error(fmt("Bad commit reference: %s", hex)); 25 cgit_print_error(fmt("Bad commit reference: %s", hex));
27 return; 26 return;
28 } 27 }
29
30 info = cgit_parse_commit(commit); 28 info = cgit_parse_commit(commit);
31 29
32 html("<table class='commit-info'>\n"); 30 html("<table class='commit-info'>\n");
33 html("<tr><th>author</th><td>"); 31 html("<tr><th>author</th><td>");
34 html_txt(info->author); 32 html_txt(info->author);
35 html(" "); 33 html(" ");
36 html_txt(info->author_email); 34 html_txt(info->author_email);
37 html("</td><td class='right'>"); 35 html("</td><td class='right'>");
38 cgit_print_date(info->author_date); 36 cgit_print_date(info->author_date);
39 html("</td></tr>\n"); 37 html("</td></tr>\n");
40 html("<tr><th>committer</th><td>"); 38 html("<tr><th>committer</th><td>");
41 html_txt(info->committer); 39 html_txt(info->committer);
42 html(" "); 40 html(" ");
43 html_txt(info->committer_email); 41 html_txt(info->committer_email);
44 html("</td><td class='right'>"); 42 html("</td><td class='right'>");
45 cgit_print_date(info->committer_date); 43 cgit_print_date(info->committer_date);
46 html("</td></tr>\n"); 44 html("</td></tr>\n");
47 html("<tr><th>tree</th><td colspan='2' class='sha1'><a href='"); 45 html("<tr><th>tree</th><td colspan='2' class='sha1'><a href='");
48 html_attr(cgit_pageurl(cgit_query_repo, "tree", fmt("id=%s", sha1_to_hex(commit->tree->object.sha1)))); 46 query = fmt("id=%s", sha1_to_hex(commit->tree->object.sha1));
47 html_attr(cgit_pageurl(cgit_query_repo, "tree", query));
49 htmlf("'>%s</a></td></tr>\n", sha1_to_hex(commit->tree->object.sha1)); 48 htmlf("'>%s</a></td></tr>\n", sha1_to_hex(commit->tree->object.sha1));
50 49 for (p = commit->parents; p ; p = p->next) {
51 for (p = commit->parents; p ; p = p->next) { 50 html("<tr><th>parent</th>"
52 html("<tr><th>parent</th><td colspan='2' class='sha1'><a href='"); 51 "<td colspan='2' class='sha1'>"
53 html_attr(cgit_pageurl(cgit_query_repo, "commit", fmt("id=%s", sha1_to_hex(p->item->object.sha1)))); 52 "<a href='");
53 query = fmt("id=%s", sha1_to_hex(p->item->object.sha1));
54 html_attr(cgit_pageurl(cgit_query_repo, "commit", query));
54 htmlf("'>%s</a></td></tr>\n", 55 htmlf("'>%s</a></td></tr>\n",
55 sha1_to_hex(p->item->object.sha1)); 56 sha1_to_hex(p->item->object.sha1));
56 } 57 }
57 html("</table>\n"); 58 html("</table>\n");
58 html("<div class='commit-subject'>"); 59 html("<div class='commit-subject'>");
59 html_txt(info->subject); 60 html_txt(info->subject);
60 html("</div>"); 61 html("</div>");
61 html("<div class='commit-msg'>"); 62 html("<div class='commit-msg'>");
62 html_txt(info->msg); 63 html_txt(info->msg);
63 html("</div>"); 64 html("</div>");
64 cgit_free_commitinfo(info); 65 cgit_free_commitinfo(info);
65} 66}