]> granicus.if.org Git - cgit/commitdiff
Use standard tree-diff function when showing diffstat for single commit
authorLars Hjemli <hjemli@gmail.com>
Sun, 13 May 2007 09:26:23 +0000 (11:26 +0200)
committerLars Hjemli <hjemli@gmail.com>
Sun, 13 May 2007 09:30:18 +0000 (11:30 +0200)
Remove unneeded code from ui-commit.c and replace with call to standard
diff-functions.

Also fix some whitespace issues.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
ui-commit.c

index 361880013e0347a1aedf2c03647d123ca0ea508e..f1a22d38714dafbf6647de73a078aa36cca368c0 100644 (file)
@@ -14,7 +14,7 @@ void print_filepair(struct diff_filepair *pair)
 {
        char *query;
        char *class;
-       
+
        switch (pair->status) {
        case DIFF_STATUS_ADDED:
                class = "add";
@@ -52,25 +52,25 @@ void print_filepair(struct diff_filepair *pair)
                html_filemode(pair->two->mode);
        }
 
-       if (pair->one->mode != pair->two->mode && 
-           !is_null_sha1(pair->one->sha1) && 
+       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&id2=%s", sha1_to_hex(pair->one->sha1), 
-                   sha1_to_hex(pair->two->sha1));      
-       html_link_open(cgit_pageurl(cgit_query_repo, "diff", 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 || 
+       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 ? 
+               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), 
+               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>)");
@@ -81,44 +81,9 @@ void print_filepair(struct diff_filepair *pair)
        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)
-{
-       int i;
-
-       for (i = 0; i < q->nr; i++) {
-               if (q->queue[i]->status == 'U')
-                       continue;
-               print_filepair(q->queue[i]);
-       }
-}
-
-void cgit_diffstat(struct commit *commit)
-{
-       struct diff_options opt;
-       int ret;
-
-       diff_setup(&opt);
-       opt.output_format = DIFF_FORMAT_CALLBACK;
-       opt.detect_rename = 1;
-       opt.recursive = 1;
-       opt.format_callback = diff_format_cb;
-       diff_setup_done(&opt);
-       
-       if (commit->parents)
-               ret = diff_tree_sha1(commit->parents->item->object.sha1,
-                                    commit->object.sha1,
-                                    "", &opt);
-       else
-               ret = diff_root_tree_sha1(commit->object.sha1, "", &opt);
 
-       diffcore_std(&opt);
-       diff_flush(&opt);
+       html("</td></tr>\n");
+       files++;
 }
 
 void cgit_print_commit(const char *hex)
@@ -166,17 +131,16 @@ void cgit_print_commit(const char *hex)
                     "<a href='");
                query = fmt("id=%s", sha1_to_hex(p->item->object.sha1));
                html_attr(cgit_pageurl(cgit_query_repo, "commit", query));
-               htmlf("'>%s</a></td></tr>\n", 
+               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", 
+               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);
@@ -186,7 +150,7 @@ void cgit_print_commit(const char *hex)
        html("</div>");
        html("<table class='diffstat'>");
        html("<tr><th colspan='3'>Affected files</tr>\n");
-       cgit_diffstat(commit);
+       cgit_diff_commit(commit, print_filepair);
        htmlf("<tr><td colspan='3' class='summary'>"
              "%d file%s changed</td></tr>\n", files, files > 1 ? "s" : "");
        html("</table>");