author | Justin Waters <justin.waters@timesys.com> | 2009-01-12 15:23:28 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2009-01-27 21:45:47 (UTC) |
commit | 0027e38b40b8ef11dac6326a4e610728bae88247 (patch) (unidiff) | |
tree | 808f1c8aff2dce84d5507a45602acdbf600360cd | |
parent | e78186dcb63ec67a38dddfcd8f91d2108583320b (diff) | |
download | cgit-0027e38b40b8ef11dac6326a4e610728bae88247.zip cgit-0027e38b40b8ef11dac6326a4e610728bae88247.tar.gz cgit-0027e38b40b8ef11dac6326a4e610728bae88247.tar.bz2 |
Add decorations to commit pages
This adds the tag and branch head decorations to the commit pages. This is
similar to how commits are displayed in the standard gitweb interface.
Signed-off-by: Justin Waters <justin.waters@timesys.com>
-rw-r--r-- | ui-commit.c | 4 | ||||
-rw-r--r-- | ui-log.h | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/ui-commit.c b/ui-commit.c index a6a85a4..41ce70e 100644 --- a/ui-commit.c +++ b/ui-commit.c | |||
@@ -1,102 +1,106 @@ | |||
1 | /* ui-commit.c: generate commit view | 1 | /* ui-commit.c: generate commit view |
2 | * | 2 | * |
3 | * Copyright (C) 2006 Lars Hjemli | 3 | * Copyright (C) 2006 Lars Hjemli |
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 | #include "html.h" | 10 | #include "html.h" |
11 | #include "ui-shared.h" | 11 | #include "ui-shared.h" |
12 | #include "ui-diff.h" | 12 | #include "ui-diff.h" |
13 | #include "ui-log.h" | ||
13 | 14 | ||
14 | void cgit_print_commit(char *hex) | 15 | void cgit_print_commit(char *hex) |
15 | { | 16 | { |
16 | struct commit *commit, *parent; | 17 | struct commit *commit, *parent; |
17 | struct commitinfo *info; | 18 | struct commitinfo *info; |
18 | struct commit_list *p; | 19 | struct commit_list *p; |
19 | unsigned char sha1[20]; | 20 | unsigned char sha1[20]; |
20 | char *tmp; | 21 | char *tmp; |
21 | int parents = 0; | 22 | int parents = 0; |
22 | 23 | ||
23 | if (!hex) | 24 | if (!hex) |
24 | hex = ctx.qry.head; | 25 | hex = ctx.qry.head; |
25 | 26 | ||
26 | if (get_sha1(hex, sha1)) { | 27 | if (get_sha1(hex, sha1)) { |
27 | cgit_print_error(fmt("Bad object id: %s", hex)); | 28 | cgit_print_error(fmt("Bad object id: %s", hex)); |
28 | return; | 29 | return; |
29 | } | 30 | } |
30 | commit = lookup_commit_reference(sha1); | 31 | commit = lookup_commit_reference(sha1); |
31 | if (!commit) { | 32 | if (!commit) { |
32 | cgit_print_error(fmt("Bad commit reference: %s", hex)); | 33 | cgit_print_error(fmt("Bad commit reference: %s", hex)); |
33 | return; | 34 | return; |
34 | } | 35 | } |
35 | info = cgit_parse_commit(commit); | 36 | info = cgit_parse_commit(commit); |
36 | 37 | ||
38 | load_ref_decorations(); | ||
39 | |||
37 | html("<table summary='commit info' class='commit-info'>\n"); | 40 | html("<table summary='commit info' class='commit-info'>\n"); |
38 | html("<tr><th>author</th><td>"); | 41 | html("<tr><th>author</th><td>"); |
39 | html_txt(info->author); | 42 | html_txt(info->author); |
40 | html(" "); | 43 | html(" "); |
41 | html_txt(info->author_email); | 44 | html_txt(info->author_email); |
42 | html("</td><td class='right'>"); | 45 | html("</td><td class='right'>"); |
43 | cgit_print_date(info->author_date, FMT_LONGDATE, ctx.cfg.local_time); | 46 | cgit_print_date(info->author_date, FMT_LONGDATE, ctx.cfg.local_time); |
44 | html("</td></tr>\n"); | 47 | html("</td></tr>\n"); |
45 | html("<tr><th>committer</th><td>"); | 48 | html("<tr><th>committer</th><td>"); |
46 | html_txt(info->committer); | 49 | html_txt(info->committer); |
47 | html(" "); | 50 | html(" "); |
48 | html_txt(info->committer_email); | 51 | html_txt(info->committer_email); |
49 | html("</td><td class='right'>"); | 52 | html("</td><td class='right'>"); |
50 | cgit_print_date(info->committer_date, FMT_LONGDATE, ctx.cfg.local_time); | 53 | cgit_print_date(info->committer_date, FMT_LONGDATE, ctx.cfg.local_time); |
51 | html("</td></tr>\n"); | 54 | html("</td></tr>\n"); |
52 | html("<tr><th>commit</th><td colspan='2' class='sha1'>"); | 55 | html("<tr><th>commit</th><td colspan='2' class='sha1'>"); |
53 | tmp = sha1_to_hex(commit->object.sha1); | 56 | tmp = sha1_to_hex(commit->object.sha1); |
54 | cgit_commit_link(tmp, NULL, NULL, ctx.qry.head, tmp); | 57 | cgit_commit_link(tmp, NULL, NULL, ctx.qry.head, tmp); |
55 | html(" ("); | 58 | html(" ("); |
56 | cgit_patch_link("patch", NULL, NULL, NULL, tmp); | 59 | cgit_patch_link("patch", NULL, NULL, NULL, tmp); |
57 | html(")</td></tr>\n"); | 60 | html(")</td></tr>\n"); |
58 | html("<tr><th>tree</th><td colspan='2' class='sha1'>"); | 61 | html("<tr><th>tree</th><td colspan='2' class='sha1'>"); |
59 | tmp = xstrdup(hex); | 62 | tmp = xstrdup(hex); |
60 | cgit_tree_link(sha1_to_hex(commit->tree->object.sha1), NULL, NULL, | 63 | cgit_tree_link(sha1_to_hex(commit->tree->object.sha1), NULL, NULL, |
61 | ctx.qry.head, tmp, NULL); | 64 | ctx.qry.head, tmp, NULL); |
62 | html("</td></tr>\n"); | 65 | html("</td></tr>\n"); |
63 | for (p = commit->parents; p ; p = p->next) { | 66 | for (p = commit->parents; p ; p = p->next) { |
64 | parent = lookup_commit_reference(p->item->object.sha1); | 67 | parent = lookup_commit_reference(p->item->object.sha1); |
65 | if (!parent) { | 68 | if (!parent) { |
66 | html("<tr><td colspan='3'>"); | 69 | html("<tr><td colspan='3'>"); |
67 | cgit_print_error("Error reading parent commit"); | 70 | cgit_print_error("Error reading parent commit"); |
68 | html("</td></tr>"); | 71 | html("</td></tr>"); |
69 | continue; | 72 | continue; |
70 | } | 73 | } |
71 | html("<tr><th>parent</th>" | 74 | html("<tr><th>parent</th>" |
72 | "<td colspan='2' class='sha1'>"); | 75 | "<td colspan='2' class='sha1'>"); |
73 | cgit_commit_link(sha1_to_hex(p->item->object.sha1), NULL, NULL, | 76 | cgit_commit_link(sha1_to_hex(p->item->object.sha1), NULL, NULL, |
74 | ctx.qry.head, sha1_to_hex(p->item->object.sha1)); | 77 | ctx.qry.head, sha1_to_hex(p->item->object.sha1)); |
75 | html(" ("); | 78 | html(" ("); |
76 | cgit_diff_link("diff", NULL, NULL, ctx.qry.head, hex, | 79 | cgit_diff_link("diff", NULL, NULL, ctx.qry.head, hex, |
77 | sha1_to_hex(p->item->object.sha1), NULL); | 80 | sha1_to_hex(p->item->object.sha1), NULL); |
78 | html(")</td></tr>"); | 81 | html(")</td></tr>"); |
79 | parents++; | 82 | parents++; |
80 | } | 83 | } |
81 | if (ctx.repo->snapshots) { | 84 | if (ctx.repo->snapshots) { |
82 | html("<tr><th>download</th><td colspan='2' class='sha1'>"); | 85 | html("<tr><th>download</th><td colspan='2' class='sha1'>"); |
83 | cgit_print_snapshot_links(ctx.qry.repo, ctx.qry.head, | 86 | cgit_print_snapshot_links(ctx.qry.repo, ctx.qry.head, |
84 | hex, ctx.repo->snapshots); | 87 | hex, ctx.repo->snapshots); |
85 | html("</td></tr>"); | 88 | html("</td></tr>"); |
86 | } | 89 | } |
87 | html("</table>\n"); | 90 | html("</table>\n"); |
88 | html("<div class='commit-subject'>"); | 91 | html("<div class='commit-subject'>"); |
89 | html_txt(info->subject); | 92 | html_txt(info->subject); |
93 | show_commit_decorations(commit); | ||
90 | html("</div>"); | 94 | html("</div>"); |
91 | html("<div class='commit-msg'>"); | 95 | html("<div class='commit-msg'>"); |
92 | html_txt(info->msg); | 96 | html_txt(info->msg); |
93 | html("</div>"); | 97 | html("</div>"); |
94 | if (parents < 3) { | 98 | if (parents < 3) { |
95 | if (parents) | 99 | if (parents) |
96 | tmp = sha1_to_hex(commit->parents->item->object.sha1); | 100 | tmp = sha1_to_hex(commit->parents->item->object.sha1); |
97 | else | 101 | else |
98 | tmp = NULL; | 102 | tmp = NULL; |
99 | cgit_print_diff(ctx.qry.sha1, tmp, NULL); | 103 | cgit_print_diff(ctx.qry.sha1, tmp, NULL); |
100 | } | 104 | } |
101 | cgit_free_commitinfo(info); | 105 | cgit_free_commitinfo(info); |
102 | } | 106 | } |
@@ -1,7 +1,8 @@ | |||
1 | #ifndef UI_LOG_H | 1 | #ifndef UI_LOG_H |
2 | #define UI_LOG_H | 2 | #define UI_LOG_H |
3 | 3 | ||
4 | extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, | 4 | extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, |
5 | char *pattern, char *path, int pager); | 5 | char *pattern, char *path, int pager); |
6 | extern void show_commit_decorations(struct commit *commit); | ||
6 | 7 | ||
7 | #endif /* UI_LOG_H */ | 8 | #endif /* UI_LOG_H */ |