X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/fb9e6d1594a24fe4e551fd57a9c91fd18b14806e..8f208794318f83826e98168b8b430f2d9a68bcce:/ui-log.c diff --git a/ui-log.c b/ui-log.c index 8add66a..8592843 100644 --- a/ui-log.c +++ b/ui-log.c @@ -7,6 +7,7 @@ */ #include "cgit.h" +#include "ui-log.h" #include "html.h" #include "ui-shared.h" #include "vector.h" @@ -28,7 +29,7 @@ static const char *column_colors_html[] = { #define COLUMN_COLORS_HTML_MAX (ARRAY_SIZE(column_colors_html) - 1) -void count_lines(char *line, int size) +static void count_lines(char *line, int size) { if (size <= 0) return; @@ -40,7 +41,7 @@ void count_lines(char *line, int size) rem_lines++; } -void inspect_files(struct diff_filepair *pair) +static void inspect_files(struct diff_filepair *pair) { unsigned long old_size = 0; unsigned long new_size = 0; @@ -76,6 +77,8 @@ void show_commit_decorations(struct commit *commit) cgit_tag_link(buf, NULL, "tag-deco", ctx.qry.head, buf); } else if (!prefixcmp(deco->name, "refs/remotes/")) { + if (!ctx.repo->enable_remote_branches) + goto next; strncpy(buf, deco->name + 13, sizeof(buf) - 1); cgit_log_link(buf, NULL, "remote-deco", NULL, sha1_to_hex(commit->object.sha1), @@ -88,23 +91,22 @@ void show_commit_decorations(struct commit *commit) sha1_to_hex(commit->object.sha1), ctx.qry.vpath, 0); } +next: deco = deco->next; } } -void print_commit(struct commit *commit, struct rev_info *revs) +static void print_commit(struct commit *commit, struct rev_info *revs) { struct commitinfo *info; - char *tmp; - int cols = revs->graph ? 3 : 2; + int columns = revs->graph ? 4 : 3; struct strbuf graphbuf = STRBUF_INIT; struct strbuf msgbuf = STRBUF_INIT; - if (ctx.repo->enable_log_filecount) { - cols++; - if (ctx.repo->enable_log_linecount) - cols++; - } + if (ctx.repo->enable_log_filecount) + columns++; + if (ctx.repo->enable_log_linecount) + columns++; if (revs->graph) { /* Advance graph until current commit */ @@ -112,7 +114,7 @@ void print_commit(struct commit *commit, struct rev_info *revs) /* Print graph segment in otherwise empty table row */ html(""); html(graphbuf.buf); - htmlf("\n", cols); + htmlf("\n", columns); strbuf_setlen(&graphbuf, 0); } /* Current commit's graph segment is now ready in graphbuf */ @@ -130,11 +132,7 @@ void print_commit(struct commit *commit, struct rev_info *revs) } else { html(""); - tmp = fmt("id=%s", sha1_to_hex(commit->object.sha1)); - 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(); html(""); } @@ -172,25 +170,21 @@ void print_commit(struct commit *commit, struct rev_info *revs) if (revs->graph) { html(""); - tmp = fmt("id=%s", sha1_to_hex(commit->object.sha1)); - 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(); } - if (ctx.repo->enable_log_filecount) { + if (ctx.repo->enable_log_filecount || ctx.repo->enable_log_linecount) { files = 0; add_lines = 0; rem_lines = 0; cgit_diff_commit(commit, inspect_files, ctx.qry.vpath); - html(""); - htmlf("%d", files); - if (ctx.repo->enable_log_linecount) { - html(""); - htmlf("-%d/+%d", rem_lines, add_lines); - } } + + if (ctx.repo->enable_log_filecount) + htmlf("%d", files); + if (ctx.repo->enable_log_linecount) + htmlf("-%d/+%d", rem_lines, add_lines); + html("\n"); if (revs->graph || ctx.qry.showmsg) { /* Print a second table row */ @@ -202,9 +196,8 @@ void print_commit(struct commit *commit, struct rev_info *revs) strbuf_addstr(&msgbuf, info->msg); strbuf_addch(&msgbuf, '\n'); } - format_note(NULL, commit->object.sha1, &msgbuf, - PAGE_ENCODING, - NOTES_SHOW_HEADER | NOTES_INDENT); + format_display_notes(commit->object.sha1, + &msgbuf, PAGE_ENCODING, 0); strbuf_addch(&msgbuf, '\n'); strbuf_ltrim(&msgbuf); } @@ -239,7 +232,7 @@ void print_commit(struct commit *commit, struct rev_info *revs) html(""); /* Empty 'Age' column */ /* Print msgbuf into remainder of table row */ - htmlf("\n", cols, + htmlf("\n", columns - (revs->graph ? 1 : 0), ctx.qry.showmsg ? " class='logmsg'" : ""); html_txt(msgbuf.buf); html("\n"); @@ -285,12 +278,12 @@ static char *next_token(char **src) } void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern, - char *path, int pager, int commit_graph) + char *path, int pager, int commit_graph, int commit_sort) { struct rev_info rev; struct commit *commit; struct vector vec = VECTOR_INIT(char *); - int i, columns = 3; + int i, columns = commit_graph ? 4 : 3; char *arg; /* First argv is NULL */ @@ -334,6 +327,14 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern COLUMN_COLORS_HTML_MAX); } + if (commit_sort == 1) { + static const char *date_order_arg = "--date-order"; + vector_push(&vec, &date_order_arg, 0); + } else if (commit_sort == 2) { + static const char *topo_order_arg = "--topo-order"; + vector_push(&vec, &topo_order_arg, 0); + } + if (path) { arg = "--"; vector_push(&vec, &arg, 0); @@ -379,10 +380,10 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern if (ctx.repo->enable_log_filecount) { html("Files"); columns++; - if (ctx.repo->enable_log_linecount) { - html("Lines"); - columns++; - } + } + if (ctx.repo->enable_log_linecount) { + html("Lines"); + columns++; } html("\n"); @@ -396,6 +397,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern commit->parents = NULL; } + init_display_notes(NULL); for (i = 0; i < cnt && (commit = get_revision(&rev)) != NULL; i++) { print_commit(commit, &rev); free(commit->buffer); @@ -404,23 +406,26 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern commit->parents = NULL; } if (pager) { - html("
"); + html("
"); + html(""); } else if ((commit = get_revision(&rev)) != NULL) { - html(""); + htmlf("", columns); cgit_log_link("[...]", NULL, NULL, ctx.qry.head, NULL, ctx.qry.vpath, 0, NULL, NULL, ctx.qry.showmsg); html("\n");