-rw-r--r-- | ui-log.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -61,55 +61,60 @@ static void cgit_print_commit_shortlog(struct commit *commit) *p = '\0'; sec = atoi(t); time = gmtime(&sec); } while((len = get_one_line(h)) > 0) h += len+2; h++; len = get_one_line(h); subject = h; html("<tr><td>"); strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", time); html_txt(buf); html("</td><td>"); char *qry = fmt("id=%s", sha1_to_hex(commit->object.sha1)); char *url = cgit_pageurl(cgit_query_repo, "view", qry); html_link_open(url, NULL, NULL); html_txt(subject); html_link_close(); html("</td><td>"); html_txt(author); + html("</td><td><a href='"); + html_attr(cgit_pageurl(cgit_query_repo, "tree", + fmt("id=%s", + sha1_to_hex(commit->tree->object.sha1)))); + html("'>tree</a>"); html("</td></tr>\n"); } void cgit_print_log(const char *tip, int ofs, int cnt) { struct rev_info rev; struct commit *commit; const char *argv[2] = {NULL, tip}; int n = 0; init_revisions(&rev, NULL); rev.abbrev = DEFAULT_ABBREV; rev.commit_format = CMIT_FMT_DEFAULT; rev.verbose_header = 1; rev.show_root_diff = 0; setup_revisions(2, argv, &rev, NULL); prepare_revision_walk(&rev); html("<h2>Log</h2>"); html("<table class='list'>"); - html("<tr><th>Date</th><th>Message</th><th>Author</th></tr>\n"); + html("<tr><th>Date</th><th>Message</th><th>Author</th><th>Link</th></tr>\n"); while ((commit = get_revision(&rev)) != NULL && n++ < 100) { cgit_print_commit_shortlog(commit); free(commit->buffer); commit->buffer = NULL; free_commit_list(commit->parents); commit->parents = NULL; } html("</table>\n"); } |