all repos — cgit @ 4a198e4b8ee62a9a8b5156a46bfce46dc7223fe9

a hyperfast web frontend for git written in c

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>
Ragnar Ouchterlony ragnar@lysator.liu.se
Wed, 16 Sep 2009 18:56:26 +0200
commit

4a198e4b8ee62a9a8b5156a46bfce46dc7223fe9

parent

207cc34711039329b41345f716bf421a88a6fd0a

2 files changed, 16 insertions(+), 6 deletions(-)

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

@@ -253,11 +253,11 @@ {

if (!strcmp(ctx.qry.page, "diff")) { if (use_ssdiff) cgit_diff_link("Unidiff", NULL, NULL, ctx.qry.head, - ctx.qry.sha1, ctx.qry.sha2, NULL, 1); + ctx.qry.sha1, ctx.qry.sha2, ctx.qry.path, 1); else cgit_diff_link("Side-by-side diff", NULL, NULL, ctx.qry.head, ctx.qry.sha1, - ctx.qry.sha2, NULL, 1); + ctx.qry.sha2, ctx.qry.path, 1); } }

@@ -281,13 +281,19 @@ if (S_ISGITLINK(pair->one->mode))

print_line_fn(fmt("-Subproject %s", sha1_to_hex(pair->one->sha1)), 52); if (S_ISGITLINK(pair->two->mode)) print_line_fn(fmt("+Subproject %s", sha1_to_hex(pair->two->sha1)), 52); + if (use_ssdiff) + cgit_ssdiff_footer(); return; } if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, &new_size, &binary, print_line_fn)) cgit_print_error("Error running diff"); - if (binary) - print_line_fn(" Binary files differ", 20); + if (binary) { + if (use_ssdiff) + html("<tr><td colspan='4'>Binary files differ</td></tr>"); + else + html("Binary files differ"); + } if (use_ssdiff) cgit_ssdiff_footer(); }
M ui-ssdiff.cui-ssdiff.c

@@ -108,6 +108,8 @@ html("<tr>");

if (old_line_no > 0) htmlf("<td class='lineno'>%d</td><td class='%s'>", old_line_no, class); + else if (old_line) + htmlf("<td class='lineno'></td><td class='%s'>", class); else htmlf("<td class='lineno'></td><td class='%s_dark'>", class);

@@ -122,6 +124,8 @@

if (new_line_no > 0) htmlf("<td class='lineno'>%d</td><td class='%s'>", new_line_no, class); + else if (new_line) + htmlf("<td class='lineno'></td><td class='%s'>", class); else htmlf("<td class='lineno'></td><td class='%s_dark'>", class);

@@ -251,8 +255,8 @@ }

void cgit_ssdiff_header_begin() { - current_old_line = 0; - current_new_line = 0; + current_old_line = -1; + current_new_line = -1; html("<tr><td class='space' colspan='4'><div></div></td></tr>"); html("<tr><td class='head' colspan='4'>"); }