]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-diff.c
Add support for commitdiff via h parameter
[ps-cgit] / ui-diff.c
index 999b6f39f9f2aced54ecb3622ee5db211559343c..afe1c90505ade9e52b9e89b92eb39efcd560a26d 100644 (file)
--- 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);