diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | cgit.css | 29 | ||||
-rw-r--r-- | cgit.h | 1 | ||||
-rw-r--r-- | ui-commit.c | 15 | ||||
-rw-r--r-- | ui-log.c | 12 | ||||
-rw-r--r-- | ui-refs.c | 26 |
6 files changed, 72 insertions, 13 deletions
@@ -1,4 +1,4 @@ | |||
1 | CGIT_VERSION = v0.8.3.2 | 1 | CGIT_VERSION = v0.8.3.3 |
2 | CGIT_SCRIPT_NAME = cgit.cgi | 2 | CGIT_SCRIPT_NAME = cgit.cgi |
3 | CGIT_SCRIPT_PATH = /var/www/htdocs/cgit | 3 | CGIT_SCRIPT_PATH = /var/www/htdocs/cgit |
4 | CGIT_DATA_PATH = $(CGIT_SCRIPT_PATH) | 4 | CGIT_DATA_PATH = $(CGIT_SCRIPT_PATH) |
@@ -164,6 +164,17 @@ table.list td.logmsg { | |||
164 | padding: 1em 0.5em 2em 0.5em; | 164 | padding: 1em 0.5em 2em 0.5em; |
165 | } | 165 | } |
166 | 166 | ||
167 | table.list td.lognotes-label { | ||
168 | text-align:right; | ||
169 | vertical-align:top; | ||
170 | } | ||
171 | |||
172 | table.list td.lognotes { | ||
173 | font-family: monospace; | ||
174 | white-space: pre; | ||
175 | padding: 0em 0.5em 2em 0.5em; | ||
176 | } | ||
177 | |||
167 | table.list td a { | 178 | table.list td a { |
168 | color: black; | 179 | color: black; |
169 | } | 180 | } |
@@ -326,6 +337,24 @@ div.commit-msg { | |||
326 | font-family: monospace; | 337 | font-family: monospace; |
327 | } | 338 | } |
328 | 339 | ||
340 | div.notes-header { | ||
341 | font-weight: bold; | ||
342 | padding-top: 1.5em; | ||
343 | } | ||
344 | |||
345 | div.notes { | ||
346 | white-space: pre; | ||
347 | font-family: monospace; | ||
348 | border: solid 1px #ee9; | ||
349 | background-color: #ffd; | ||
350 | padding: 0.3em 2em 0.3em 1em; | ||
351 | float: left; | ||
352 | } | ||
353 | |||
354 | div.notes-footer { | ||
355 | clear: left; | ||
356 | } | ||
357 | |||
329 | div.diffstat-header { | 358 | div.diffstat-header { |
330 | font-weight: bold; | 359 | font-weight: bold; |
331 | padding-top: 1.5em; | 360 | padding-top: 1.5em; |
@@ -19,6 +19,7 @@ | |||
19 | #include <xdiff-interface.h> | 19 | #include <xdiff-interface.h> |
20 | #include <xdiff/xdiff.h> | 20 | #include <xdiff/xdiff.h> |
21 | #include <utf8.h> | 21 | #include <utf8.h> |
22 | #include <notes.h> | ||
22 | 23 | ||
23 | 24 | ||
24 | /* | 25 | /* |
diff --git a/ui-commit.c b/ui-commit.c index a11bc5f..45af450 100644 --- a/ui-commit.c +++ b/ui-commit.c | |||
@@ -17,6 +17,7 @@ void cgit_print_commit(char *hex, const char *prefix) | |||
17 | struct commit *commit, *parent; | 17 | struct commit *commit, *parent; |
18 | struct commitinfo *info, *parent_info; | 18 | struct commitinfo *info, *parent_info; |
19 | struct commit_list *p; | 19 | struct commit_list *p; |
20 | struct strbuf notes = STRBUF_INIT; | ||
20 | unsigned char sha1[20]; | 21 | unsigned char sha1[20]; |
21 | char *tmp, *tmp2; | 22 | char *tmp, *tmp2; |
22 | int parents = 0; | 23 | int parents = 0; |
@@ -35,6 +36,8 @@ void cgit_print_commit(char *hex, const char *prefix) | |||
35 | } | 36 | } |
36 | info = cgit_parse_commit(commit); | 37 | info = cgit_parse_commit(commit); |
37 | 38 | ||
39 | get_commit_notes(commit, ¬es, PAGE_ENCODING, 0); | ||
40 | |||
38 | load_ref_decorations(DECORATE_FULL_REFS); | 41 | load_ref_decorations(DECORATE_FULL_REFS); |
39 | 42 | ||
40 | html("<table summary='commit info' class='commit-info'>\n"); | 43 | html("<table summary='commit info' class='commit-info'>\n"); |
@@ -120,6 +123,17 @@ void cgit_print_commit(char *hex, const char *prefix) | |||
120 | if (ctx.repo->commit_filter) | 123 | if (ctx.repo->commit_filter) |
121 | cgit_close_filter(ctx.repo->commit_filter); | 124 | cgit_close_filter(ctx.repo->commit_filter); |
122 | html("</div>"); | 125 | html("</div>"); |
126 | if (notes.len != 0) { | ||
127 | html("<div class='notes-header'>Notes</div>"); | ||
128 | html("<div class='notes'>"); | ||
129 | if (ctx.repo->commit_filter) | ||
130 | cgit_open_filter(ctx.repo->commit_filter); | ||
131 | html_txt(notes.buf); | ||
132 | if (ctx.repo->commit_filter) | ||
133 | cgit_close_filter(ctx.repo->commit_filter); | ||
134 | html("</div>"); | ||
135 | html("<div class='notes-footer'></div>"); | ||
136 | } | ||
123 | if (parents < 3) { | 137 | if (parents < 3) { |
124 | if (parents) | 138 | if (parents) |
125 | tmp = sha1_to_hex(commit->parents->item->object.sha1); | 139 | tmp = sha1_to_hex(commit->parents->item->object.sha1); |
@@ -127,5 +141,6 @@ void cgit_print_commit(char *hex, const char *prefix) | |||
127 | tmp = NULL; | 141 | tmp = NULL; |
128 | cgit_print_diff(ctx.qry.sha1, tmp, prefix); | 142 | cgit_print_diff(ctx.qry.sha1, tmp, prefix); |
129 | } | 143 | } |
144 | strbuf_release(¬es); | ||
130 | cgit_free_commitinfo(info); | 145 | cgit_free_commitinfo(info); |
131 | } | 146 | } |
@@ -111,6 +111,9 @@ void print_commit(struct commit *commit) | |||
111 | } | 111 | } |
112 | html("</td></tr>\n"); | 112 | html("</td></tr>\n"); |
113 | if (ctx.qry.showmsg) { | 113 | if (ctx.qry.showmsg) { |
114 | struct strbuf notes = STRBUF_INIT; | ||
115 | get_commit_notes(commit, ¬es, PAGE_ENCODING, 0); | ||
116 | |||
114 | if (ctx.repo->enable_log_filecount) { | 117 | if (ctx.repo->enable_log_filecount) { |
115 | cols++; | 118 | cols++; |
116 | if (ctx.repo->enable_log_linecount) | 119 | if (ctx.repo->enable_log_linecount) |
@@ -120,6 +123,15 @@ void print_commit(struct commit *commit) | |||
120 | cols); | 123 | cols); |
121 | html_txt(info->msg); | 124 | html_txt(info->msg); |
122 | html("</td></tr>\n"); | 125 | html("</td></tr>\n"); |
126 | if (notes.len != 0) { | ||
127 | html("<tr class='nohover'>"); | ||
128 | html("<td class='lognotes-label'>Notes:</td>"); | ||
129 | htmlf("<td colspan='%d' class='lognotes'>", | ||
130 | cols); | ||
131 | html_txt(notes.buf); | ||
132 | html("</td></tr>\n"); | ||
133 | } | ||
134 | strbuf_release(¬es); | ||
123 | } | 135 | } |
124 | cgit_free_commitinfo(info); | 136 | cgit_free_commitinfo(info); |
125 | } | 137 | } |
@@ -42,23 +42,25 @@ static int cmp_branch_age(const void *a, const void *b) | |||
42 | return cmp_age(r1->commit->committer_date, r2->commit->committer_date); | 42 | return cmp_age(r1->commit->committer_date, r2->commit->committer_date); |
43 | } | 43 | } |
44 | 44 | ||
45 | static int get_ref_age(struct refinfo *ref) | ||
46 | { | ||
47 | if (!ref->object) | ||
48 | return 0; | ||
49 | switch (ref->object->type) { | ||
50 | case OBJ_TAG: | ||
51 | return ref->tag ? ref->tag->tagger_date : 0; | ||
52 | case OBJ_COMMIT: | ||
53 | return ref->commit ? ref->commit->committer_date : 0; | ||
54 | } | ||
55 | return 0; | ||
56 | } | ||
57 | |||
45 | static int cmp_tag_age(const void *a, const void *b) | 58 | static int cmp_tag_age(const void *a, const void *b) |
46 | { | 59 | { |
47 | struct refinfo *r1 = *(struct refinfo **)a; | 60 | struct refinfo *r1 = *(struct refinfo **)a; |
48 | struct refinfo *r2 = *(struct refinfo **)b; | 61 | struct refinfo *r2 = *(struct refinfo **)b; |
49 | int r1date, r2date; | ||
50 | |||
51 | if (r1->object->type != OBJ_COMMIT) | ||
52 | r1date = r1->tag->tagger_date; | ||
53 | else | ||
54 | r1date = r1->commit->committer_date; | ||
55 | |||
56 | if (r2->object->type != OBJ_COMMIT) | ||
57 | r2date = r2->tag->tagger_date; | ||
58 | else | ||
59 | r2date = r2->commit->committer_date; | ||
60 | 62 | ||
61 | return cmp_age(r1date, r2date); | 63 | return cmp_age(get_ref_age(r1), get_ref_age(r2)); |
62 | } | 64 | } |
63 | 65 | ||
64 | static int print_branch(struct refinfo *ref) | 66 | static int print_branch(struct refinfo *ref) |