X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/a342ac6b4d7830f82230b0f6a29bc9378d66747e..f9ff7df613b4ee86fe5914c4ae3400650882c03d:/ui-diff.c diff --git a/ui-diff.c b/ui-diff.c index 7ec5701..afe1c90 100644 --- a/ui-diff.c +++ b/ui-diff.c @@ -35,7 +35,10 @@ static void header(unsigned char *sha1, char *path1, unsigned char *sha2, char *path2) { char *abbrev1, *abbrev2; - + if (is_null_sha1(sha1)) + path1 = "dev/null"; + if (is_null_sha1(sha2)) + path2 = "dev/null"; html(""); html("
"); html("diff --git a/"); @@ -63,11 +66,23 @@ static void filepair_cb(struct diff_filepair *pair) html(""); } -void cgit_print_diff(const char *old_hex, const char *new_hex, char *path) +void cgit_print_diff(const char *head, const char *old_hex, const char *new_hex, char *path) { unsigned char sha1[20], sha2[20]; enum object_type type; unsigned long size; + struct commit *commit; + + if (head && !old_hex && !new_hex) { + get_sha1(head, sha1); + commit = lookup_commit_reference(sha1); + if (commit && !parse_commit(commit)) { + html(""); + cgit_diff_commit(commit, filepair_cb); + html("
"); + } + return; + } get_sha1(old_hex, sha1); get_sha1(new_hex, sha2);