summaryrefslogtreecommitdiffabout
authorJohan Herland <johan@herland.net>2010-11-15 17:39:49 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2010-11-16 07:18:36 (UTC)
commit5a36c2a291a00b59b8ec2f112453e117797c2fe5 (patch) (side-by-side diff)
treeeb975b9e99401e3209fc3180409ec48b285920ac
parentc2680325f68192368d32f26458fea9cfb50df6e5 (diff)
downloadcgit-5a36c2a291a00b59b8ec2f112453e117797c2fe5.zip
cgit-5a36c2a291a00b59b8ec2f112453e117797c2fe5.tar.gz
cgit-5a36c2a291a00b59b8ec2f112453e117797c2fe5.tar.bz2
ui-log: Change display of full commit messages (and notes)
When showmsg is enabled, ui-log (in addition to the table row containing the details of the current commit) adds a second table row containing the remainder of the commit message, and yet another table row containing the commit notes (if any). The vertical margins between commit subject, commit message and commit notes are controlled by CSS. In preparation for the commit graph (which will be printed to the left of the commit message/notes) we need to eliminate these vertical margins (as they would produce ugly gaps in the commit graph) and instead achieve them by adding newlines to the commit message/notes. Furthermore, we can no longer print the "Notes:" header in the "Age" column, since the graph will be drawn between the "Age" column and the "Commit message" column. This patch therefore prepares the commit message and commit notes in a single buffer (properly formatting the notes using the NOTES_SHOW_HEADER and NOTES_INDENT flags to format_note()), and then prints the entire buffer into a single table row. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.css13
-rw-r--r--ui-log.c30
2 files changed, 18 insertions, 25 deletions
diff --git a/cgit.css b/cgit.css
index 0c88b65..7a5f423 100644
--- a/cgit.css
+++ b/cgit.css
@@ -140,60 +140,49 @@ table.list tr.nohover:hover {
table.list th {
font-weight: bold;
/* color: #888;
border-top: dashed 1px #888;
border-bottom: dashed 1px #888;
*/
padding: 0.1em 0.5em 0.05em 0.5em;
vertical-align: baseline;
}
table.list td {
border: none;
padding: 0.1em 0.5em 0.1em 0.5em;
}
table.list td.logsubject {
font-family: monospace;
font-weight: bold;
}
table.list td.logmsg {
font-family: monospace;
white-space: pre;
- padding: 1em 0.5em 2em 0.5em;
-}
-
-table.list td.lognotes-label {
- text-align:right;
- vertical-align:top;
-}
-
-table.list td.lognotes {
- font-family: monospace;
- white-space: pre;
- padding: 0em 0.5em 2em 0.5em;
+ padding: 0 0.5em;
}
table.list td a {
color: black;
}
table.list td a.ls-dir {
font-weight: bold;
color: #00f;
}
table.list td a:hover {
color: #00f;
}
img {
border: none;
}
input#switch-btn {
margin: 2px 0px 0px 0px;
}
td#sidebar input.txt {
diff --git a/ui-log.c b/ui-log.c
index 27f5a1a..6d7fcae 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -90,71 +90,75 @@ void print_commit(struct commit *commit)
tmp = cgit_fileurl(ctx.repo->url, "commit", ctx.qry.vpath, tmp);
html_link_open(tmp, NULL, NULL);
cgit_print_age(commit->date, TM_WEEK * 2, FMT_SHORTDATE);
html_link_close();
htmlf("</td><td%s>",
ctx.qry.showmsg ? " class='logsubject'" : "");
cgit_commit_link(info->subject, NULL, NULL, ctx.qry.head,
sha1_to_hex(commit->object.sha1), ctx.qry.vpath, 0);
show_commit_decorations(commit);
html("</td><td>");
html_txt(info->author);
if (ctx.repo->enable_log_filecount) {
files = 0;
add_lines = 0;
rem_lines = 0;
cgit_diff_commit(commit, inspect_files, ctx.qry.vpath);
html("</td><td>");
htmlf("%d", files);
if (ctx.repo->enable_log_linecount) {
html("</td><td>");
htmlf("-%d/+%d", rem_lines, add_lines);
}
}
html("</td></tr>\n");
- if (ctx.qry.showmsg) {
- struct strbuf notes = STRBUF_INIT;
- format_note(NULL, commit->object.sha1, &notes, PAGE_ENCODING, 0);
+
+ if (ctx.qry.showmsg) { /* Print message + notes in a second table row */
+ /* Concatenate commit message and notes in msgbuf */
+ struct strbuf msgbuf = STRBUF_INIT;
+ if (info->msg && *(info->msg)) {
+ strbuf_addstr(&msgbuf, info->msg);
+ strbuf_addch(&msgbuf, '\n');
+ }
+ format_note(NULL, commit->object.sha1, &msgbuf, PAGE_ENCODING,
+ NOTES_SHOW_HEADER | NOTES_INDENT);
+ strbuf_addch(&msgbuf, '\n');
+ strbuf_ltrim(&msgbuf);
if (ctx.repo->enable_log_filecount) {
cols++;
if (ctx.repo->enable_log_linecount)
cols++;
}
+
+ /* Create second table row containing msgbuf */
htmlf("<tr class='nohover'><td/><td colspan='%d' class='logmsg'>",
cols);
- html_txt(info->msg);
+ html_txt(msgbuf.buf);
html("</td></tr>\n");
- if (notes.len != 0) {
- html("<tr class='nohover'>");
- html("<td class='lognotes-label'>Notes:</td>");
- htmlf("<td colspan='%d' class='lognotes'>",
- cols);
- html_txt(notes.buf);
- html("</td></tr>\n");
- }
- strbuf_release(&notes);
+ strbuf_release(&msgbuf);
}
+
cgit_free_commitinfo(info);
}
static const char *disambiguate_ref(const char *ref)
{
unsigned char sha1[20];
const char *longref;
longref = fmt("refs/heads/%s", ref);
if (get_sha1(longref, sha1) == 0)
return longref;
return ref;
}
static char *next_token(char **src)
{
char *result;
if (!src || !*src)
return NULL;
while (isspace(**src))
(*src)++;
if (!**src)