-rw-r--r-- | ui-commit.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/ui-commit.c b/ui-commit.c index c5ee8e7..b49b2e9 100644 --- a/ui-commit.c +++ b/ui-commit.c @@ -17,66 +17,73 @@ void print_filepair(struct diff_filepair *pair) switch (pair->status) { case DIFF_STATUS_ADDED: class = "add"; break; case DIFF_STATUS_COPIED: class = "cpy"; break; case DIFF_STATUS_DELETED: class = "del"; break; case DIFF_STATUS_MODIFIED: class = "upd"; break; case DIFF_STATUS_RENAMED: class = "mov"; break; case DIFF_STATUS_TYPE_CHANGED: class = "typ"; break; case DIFF_STATUS_UNKNOWN: class = "unk"; break; case DIFF_STATUS_UNMERGED: class = "stg"; break; default: die("bug: unhandled diff status %c", pair->status); } html("<tr>"); htmlf("<td class='mode'>"); - html_filemode(pair->two->mode); - if (pair->one->mode != pair->two->mode) { + if (is_null_sha1(pair->two->sha1)) { + html_filemode(pair->one->mode); + } else { + html_filemode(pair->two->mode); + } + + if (pair->one->mode != pair->two->mode && + !is_null_sha1(pair->one->sha1) && + !is_null_sha1(pair->two->sha1)) { html("<span class='modechange'>["); html_filemode(pair->one->mode); html("]</span>"); } htmlf("</td><td class='%s'>", class); query = fmt("id=%s", sha1_to_hex(pair->two->sha1)); html_link_open(cgit_pageurl(cgit_query_repo, "view", query), NULL, NULL); if (pair->status == DIFF_STATUS_COPIED || pair->status == DIFF_STATUS_RENAMED) { html_txt(pair->two->path); htmlf("</a> (%s from ", pair->status == DIFF_STATUS_COPIED ? "copied" : "renamed"); query = fmt("id=%s", sha1_to_hex(pair->one->sha1)); html_link_open(cgit_pageurl(cgit_query_repo, "view", query), NULL, NULL); html_txt(pair->one->path); html("</a>)"); } else { html_txt(pair->two->path); html("</a>"); } html("<td>"); //TODO: diffstat graph html("</td></tr>\n"); files++; } void diff_format_cb(struct diff_queue_struct *q, struct diff_options *options, void *data) |