diff options
| author | 2009-09-17 01:56:26 (JST) | |
|---|---|---|
| committer | 2009-09-17 03:17:56 (JST) | |
| commit | 4a198e4b8ee62a9a8b5156a46bfce46dc7223fe9 (patch) | |
| tree | c6389de8ae75cf907ed3884e87ee554d80498145 | |
| parent | 207cc34711039329b41345f716bf421a88a6fd0a (diff) | |
| download | cgit-4a198e4b8ee62a9a8b5156a46bfce46dc7223fe9.zip cgit-4a198e4b8ee62a9a8b5156a46bfce46dc7223fe9.tar.gz | |
Fixed side-by-side diff bugs related to binary diff and more.
The fixed bugs:
* "Binary files differ" did not show up either in unidiff or
side-by-side-diff.
* Subproject diffs did not work for side-by-side diffs.
* The ssdiff link on diff pages did not conserve the path.
Signed-off-by: Ragnar Ouchterlony <ragnar@lysator.liu.se>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| -rw-r--r-- | ui-diff.c | 14 | ||||
| -rw-r--r-- | ui-ssdiff.c | 8 |
2 files changed, 16 insertions, 6 deletions
| @@ -253,11 +253,11 @@ static void print_ssdiff_link() | |||
| 253 | if (!strcmp(ctx.qry.page, "diff")) { | 253 | if (!strcmp(ctx.qry.page, "diff")) { |
| 254 | if (use_ssdiff) | 254 | if (use_ssdiff) |
| 255 | cgit_diff_link("Unidiff", NULL, NULL, ctx.qry.head, | 255 | cgit_diff_link("Unidiff", NULL, NULL, ctx.qry.head, |
| 256 | ctx.qry.sha1, ctx.qry.sha2, NULL, 1); | 256 | ctx.qry.sha1, ctx.qry.sha2, ctx.qry.path, 1); |
| 257 | else | 257 | else |
| 258 | cgit_diff_link("Side-by-side diff", NULL, NULL, | 258 | cgit_diff_link("Side-by-side diff", NULL, NULL, |
| 259 | ctx.qry.head, ctx.qry.sha1, | 259 | ctx.qry.head, ctx.qry.sha1, |
| 260 | ctx.qry.sha2, NULL, 1); | 260 | ctx.qry.sha2, ctx.qry.path, 1); |
| 261 | } | 261 | } |
| 262 | } | 262 | } |
| 263 | 263 | ||
| @@ -281,13 +281,19 @@ static void filepair_cb(struct diff_filepair *pair) | |||
| 281 | print_line_fn(fmt("-Subproject %s", sha1_to_hex(pair->one->sha1)), 52); | 281 | print_line_fn(fmt("-Subproject %s", sha1_to_hex(pair->one->sha1)), 52); |
| 282 | if (S_ISGITLINK(pair->two->mode)) | 282 | if (S_ISGITLINK(pair->two->mode)) |
| 283 | print_line_fn(fmt("+Subproject %s", sha1_to_hex(pair->two->sha1)), 52); | 283 | print_line_fn(fmt("+Subproject %s", sha1_to_hex(pair->two->sha1)), 52); |
| 284 | if (use_ssdiff) | ||
| 285 | cgit_ssdiff_footer(); | ||
| 284 | return; | 286 | return; |
| 285 | } | 287 | } |
| 286 | if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, | 288 | if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, |
| 287 | &new_size, &binary, print_line_fn)) | 289 | &new_size, &binary, print_line_fn)) |
| 288 | cgit_print_error("Error running diff"); | 290 | cgit_print_error("Error running diff"); |
| 289 | if (binary) | 291 | if (binary) { |
| 290 | print_line_fn(" Binary files differ", 20); | 292 | if (use_ssdiff) |
| 293 | html("<tr><td colspan='4'>Binary files differ</td></tr>"); | ||
| 294 | else | ||
| 295 | html("Binary files differ"); | ||
| 296 | } | ||
| 291 | if (use_ssdiff) | 297 | if (use_ssdiff) |
| 292 | cgit_ssdiff_footer(); | 298 | cgit_ssdiff_footer(); |
| 293 | } | 299 | } |
diff --git a/ui-ssdiff.c b/ui-ssdiff.c index 8215051..5673642 100644 --- a/ui-ssdiff.c +++ b/ui-ssdiff.c | |||
| @@ -108,6 +108,8 @@ static void print_ssdiff_line(char *class, int old_line_no, char *old_line, | |||
| 108 | if (old_line_no > 0) | 108 | if (old_line_no > 0) |
| 109 | htmlf("<td class='lineno'>%d</td><td class='%s'>", | 109 | htmlf("<td class='lineno'>%d</td><td class='%s'>", |
| 110 | old_line_no, class); | 110 | old_line_no, class); |
| 111 | else if (old_line) | ||
| 112 | htmlf("<td class='lineno'></td><td class='%s'>", class); | ||
| 111 | else | 113 | else |
| 112 | htmlf("<td class='lineno'></td><td class='%s_dark'>", class); | 114 | htmlf("<td class='lineno'></td><td class='%s_dark'>", class); |
| 113 | 115 | ||
| @@ -122,6 +124,8 @@ static void print_ssdiff_line(char *class, int old_line_no, char *old_line, | |||
| 122 | if (new_line_no > 0) | 124 | if (new_line_no > 0) |
| 123 | htmlf("<td class='lineno'>%d</td><td class='%s'>", | 125 | htmlf("<td class='lineno'>%d</td><td class='%s'>", |
| 124 | new_line_no, class); | 126 | new_line_no, class); |
| 127 | else if (new_line) | ||
| 128 | htmlf("<td class='lineno'></td><td class='%s'>", class); | ||
| 125 | else | 129 | else |
| 126 | htmlf("<td class='lineno'></td><td class='%s_dark'>", class); | 130 | htmlf("<td class='lineno'></td><td class='%s_dark'>", class); |
| 127 | 131 | ||
| @@ -251,8 +255,8 @@ void cgit_ssdiff_line_cb(char *line, int len) | |||
| 251 | 255 | ||
| 252 | void cgit_ssdiff_header_begin() | 256 | void cgit_ssdiff_header_begin() |
| 253 | { | 257 | { |
| 254 | current_old_line = 0; | 258 | current_old_line = -1; |
| 255 | current_new_line = 0; | 259 | current_new_line = -1; |
| 256 | html("<tr><td class='space' colspan='4'><div></div></td></tr>"); | 260 | html("<tr><td class='space' colspan='4'><div></div></td></tr>"); |
| 257 | html("<tr><td class='head' colspan='4'>"); | 261 | html("<tr><td class='head' colspan='4'>"); |
| 258 | } | 262 | } |
