]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-commit.c
Add support for downloading single blobs
[ps-cgit] / ui-commit.c
index c5ee8e70490e3e1c963c903b3e171ed131eb3775..361880013e0347a1aedf2c03647d123ca0ea508e 100644 (file)
@@ -46,15 +46,23 @@ void print_filepair(struct diff_filepair *pair)
 
        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), 
+       query = fmt("id=%s&id2=%s", sha1_to_hex(pair->one->sha1), 
+                   sha1_to_hex(pair->two->sha1));      
+       html_link_open(cgit_pageurl(cgit_query_repo, "diff", query), 
                       NULL, NULL);
        if (pair->status == DIFF_STATUS_COPIED || 
            pair->status == DIFF_STATUS_RENAMED) {
@@ -120,6 +128,7 @@ void cgit_print_commit(const char *hex)
        struct commit_list *p;
        unsigned char sha1[20];
        char *query;
+       char *filename;
 
        if (get_sha1(hex, sha1)) {
                cgit_print_error(fmt("Bad object id: %s", hex));
@@ -160,6 +169,14 @@ void cgit_print_commit(const char *hex)
                htmlf("'>%s</a></td></tr>\n", 
                      sha1_to_hex(p->item->object.sha1));
        }
+       if (cgit_repo->snapshots) {
+               htmlf("<tr><th>download</th><td colspan='2' class='sha1'><a href='");
+               filename = fmt("%s-%s.zip", cgit_query_repo, hex);
+               html_attr(cgit_pageurl(cgit_query_repo, "snapshot", 
+                                      fmt("id=%s&name=%s", hex, filename)));
+               htmlf("'>%s</a></td></tr>", filename);
+       }
+       
        html("</table>\n");
        html("<div class='commit-subject'>");
        html_txt(info->subject);