all repos — cgit @ 04619c9b8512921a87187b9adf8573e2bdacd0a6

a hyperfast web frontend for git written in c

ui-diff: fix links from diffstat

The links in the diffstat is supposed to work as a filter for the diff,
but this only worked when a single rev was supplied, i.e. the filtered
diff was always against the parent of the specified rev.

With this patch it is now possible to use the diffstat as a 'filter menu'
for urls like http://hjemli.net/git/cgit/diff/?id=v0.7.2&id2=v0.7.1

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Lars Hjemli hjemli@gmail.com
Tue, 23 Sep 2008 17:47:26 +0200
commit

04619c9b8512921a87187b9adf8573e2bdacd0a6

parent

06e14dc61cf36c146f04de91497d2fe866c46f5e

1 files changed, 2 insertions(+), 4 deletions(-)

jump to
M ui-diff.cui-diff.c

@@ -16,7 +16,6 @@

static int files, slots; static int total_adds, total_rems, max_changes; static int lines_added, lines_removed; -static char *curr_rev; static struct fileinfo { char status;

@@ -80,8 +79,8 @@ cgit_print_filemode(info->old_mode);

html("]</span>"); } htmlf("</td><td class='%s'>", class); - cgit_diff_link(info->new_path, NULL, NULL, ctx.qry.head, curr_rev, - NULL, info->new_path); + cgit_diff_link(info->new_path, NULL, NULL, ctx.qry.head, ctx.qry.sha1, + ctx.qry.sha2, info->new_path); if (info->status == DIFF_STATUS_COPIED || info->status == DIFF_STATUS_RENAMED) htmlf(" (%s from %s)", info->status == DIFF_STATUS_COPIED ? "copied" : "renamed",

@@ -145,7 +144,6 @@

html("<div class='diffstat-header'>Diffstat</div>"); html("<table summary='diffstat' class='diffstat'>"); max_changes = 0; - curr_rev = xstrdup(sha1_to_hex(new_sha1)); cgit_diff_tree(old_sha1, new_sha1, inspect_filepair, NULL); for(i = 0; i<files; i++) print_fileinfo(&items[i]);