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>
此提交包含在:
		
							
								
								
									
										14
									
								
								ui-diff.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								ui-diff.c
									
									
									
									
									
								
							@@ -253,11 +253,11 @@ static void print_ssdiff_link()
 | 
			
		||||
	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 @@ static void filepair_cb(struct diff_filepair *pair)
 | 
			
		||||
			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();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -108,6 +108,8 @@ static void print_ssdiff_line(char *class, int old_line_no, char *old_line,
 | 
			
		||||
	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 @@ static void print_ssdiff_line(char *class, int old_line_no, char *old_line,
 | 
			
		||||
	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_line_cb(char *line, int len)
 | 
			
		||||
 | 
			
		||||
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'>");
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		新增問題並參考
	
	封鎖使用者