about summary refs log tree commit diff
path: root/ui-diff.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui-diff.c')
-rw-r--r--ui-diff.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/ui-diff.c b/ui-diff.c
index 999b6f3..afe1c90 100644
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -66,11 +66,23 @@ static void filepair_cb(struct diff_filepair *pair)
 	html("</tr></td>");
 }
 
-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("<table class='diff'>");
+			cgit_diff_commit(commit, filepair_cb);
+			html("</td></tr></table>");
+		}
+		return;
+	}
 
 	get_sha1(old_hex, sha1);
 	get_sha1(new_hex, sha2);