about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorLars Hjemli2008-09-23 17:47:26 +0200
committerLars Hjemli2008-09-23 17:47:26 +0200
commit04619c9b8512921a87187b9adf8573e2bdacd0a6 (patch)
treeb25bd09ef7d09504dac0a09810598c4d183c53b3
parentAdd LDFLAGS to makefile. (diff)
downloadcgit-04619c9b8512921a87187b9adf8573e2bdacd0a6.tar.gz
cgit-04619c9b8512921a87187b9adf8573e2bdacd0a6.zip
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>
-rw-r--r--ui-diff.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/ui-diff.c b/ui-diff.c index 1c182aa..7ab1e49 100644 --- a/ui-diff.c +++ b/ui-diff.c
@@ -16,7 +16,6 @@ unsigned char new_rev_sha1[20];
16static int files, slots; 16static int files, slots;
17static int total_adds, total_rems, max_changes; 17static int total_adds, total_rems, max_changes;
18static int lines_added, lines_removed; 18static int lines_added, lines_removed;
19static char *curr_rev;
20 19
21static struct fileinfo { 20static struct fileinfo {
22 char status; 21 char status;
@@ -80,8 +79,8 @@ static void print_fileinfo(struct fileinfo *info)
80 html("]</span>"); 79 html("]</span>");
81 } 80 }
82 htmlf("</td><td class='%s'>", class); 81 htmlf("</td><td class='%s'>", class);
83 cgit_diff_link(info->new_path, NULL, NULL, ctx.qry.head, curr_rev, 82 cgit_diff_link(info->new_path, NULL, NULL, ctx.qry.head, ctx.qry.sha1,
84 NULL, info->new_path); 83 ctx.qry.sha2, info->new_path);
85 if (info->status == DIFF_STATUS_COPIED || info->status == DIFF_STATUS_RENAMED) 84 if (info->status == DIFF_STATUS_COPIED || info->status == DIFF_STATUS_RENAMED)
86 htmlf(" (%s from %s)", 85 htmlf(" (%s from %s)",
87 info->status == DIFF_STATUS_COPIED ? "copied" : "renamed", 86 info->status == DIFF_STATUS_COPIED ? "copied" : "renamed",
@@ -145,7 +144,6 @@ void cgit_print_diffstat(const unsigned char *old_sha1,
145 html("<div class='diffstat-header'>Diffstat</div>"); 144 html("<div class='diffstat-header'>Diffstat</div>");
146 html("<table summary='diffstat' class='diffstat'>"); 145 html("<table summary='diffstat' class='diffstat'>");
147 max_changes = 0; 146 max_changes = 0;
148 curr_rev = xstrdup(sha1_to_hex(new_sha1));
149 cgit_diff_tree(old_sha1, new_sha1, inspect_filepair, NULL); 147 cgit_diff_tree(old_sha1, new_sha1, inspect_filepair, NULL);
150 for(i = 0; i<files; i++) 148 for(i = 0; i<files; i++)
151 print_fileinfo(&items[i]); 149 print_fileinfo(&items[i]);