|
diff --git a/cgit.css b/cgit.css index 97ae4d1..53c93f2 100644 --- a/ cgit.css+++ b/ cgit.css |
|
@@ -289,29 +289,28 @@ table.diffstat td.graph img { |
289 | height: 8pt; |
289 | height: 8pt; |
290 | } |
290 | } |
291 | |
291 | |
292 | div.diffstat-summary { |
292 | div.diffstat-summary { |
293 | color: #888; |
293 | color: #888; |
294 | padding-top: 0.5em; |
294 | padding-top: 0.5em; |
295 | } |
295 | } |
296 | |
296 | |
297 | table.diff th { |
| |
298 | padding: 1em 0em 0.1em 0.1em; |
| |
299 | text-align: left; |
| |
300 | } |
| |
301 | |
| |
302 | table.diff td { |
297 | table.diff td { |
303 | border: solid 1px black; |
| |
304 | font-family: monospace; |
298 | font-family: monospace; |
305 | white-space: pre; |
299 | white-space: pre; |
306 | } |
300 | } |
307 | |
301 | |
| |
302 | table.diff td div.head { |
| |
303 | font-weight: bold; |
| |
304 | padding-top: 1em; |
| |
305 | } |
| |
306 | |
308 | table.diff td div.hunk { |
307 | table.diff td div.hunk { |
309 | background: #ccc; |
308 | color: #009; |
310 | } |
309 | } |
311 | |
310 | |
312 | table.diff td div.add { |
311 | table.diff td div.add { |
313 | color: green; |
312 | color: green; |
314 | } |
313 | } |
315 | |
314 | |
316 | table.diff td div.del { |
315 | table.diff td div.del { |
317 | color: red; |
316 | color: red; |
|
|
diff --git a/ui-diff.c b/ui-diff.c index 10330d3..7ec5701 100644 --- a/ ui-diff.c+++ b/ ui-diff.c |
|
@@ -26,22 +26,43 @@ static void print_line(char *line, int len) |
26 | |
26 | |
27 | htmlf("<div class='%s'>", class); |
27 | htmlf("<div class='%s'>", class); |
28 | line[len-1] = '\0'; |
28 | line[len-1] = '\0'; |
29 | html_txt(line); |
29 | html_txt(line); |
30 | html("</div>"); |
30 | html("</div>"); |
31 | line[len-1] = c; |
31 | line[len-1] = c; |
32 | } |
32 | } |
33 | |
33 | |
34 | static void filepair_cb(struct diff_filepair *pair) |
34 | static void header(unsigned char *sha1, char *path1, |
| |
35 | unsigned char *sha2, char *path2) |
35 | { |
36 | { |
36 | html("<tr><th>"); |
37 | char *abbrev1, *abbrev2; |
37 | html_txt(pair->two->path); |
38 | |
38 | html("</th></tr>"); |
| |
39 | html("<tr><td>"); |
39 | html("<tr><td>"); |
| |
40 | html("<div class='head'>"); |
| |
41 | html("diff --git a/"); |
| |
42 | html_txt(path1); |
| |
43 | html(" b/"); |
| |
44 | html_txt(path2); |
| |
45 | abbrev1 = xstrdup(find_unique_abbrev(sha1, DEFAULT_ABBREV)); |
| |
46 | abbrev2 = xstrdup(find_unique_abbrev(sha2, DEFAULT_ABBREV)); |
| |
47 | htmlf("\nindex %s..%s", abbrev1, abbrev2); |
| |
48 | free(abbrev1); |
| |
49 | free(abbrev2); |
| |
50 | html("\n--- a/"); |
| |
51 | html_txt(path1); |
| |
52 | html("\n+++ b/"); |
| |
53 | html_txt(path2); |
| |
54 | html("</div>"); |
| |
55 | } |
| |
56 | |
| |
57 | static void filepair_cb(struct diff_filepair *pair) |
| |
58 | { |
| |
59 | header(pair->one->sha1, pair->one->path, |
| |
60 | pair->two->sha1, pair->two->path); |
40 | if (cgit_diff_files(pair->one->sha1, pair->two->sha1, print_line)) |
61 | if (cgit_diff_files(pair->one->sha1, pair->two->sha1, print_line)) |
41 | cgit_print_error("Error running diff"); |
62 | cgit_print_error("Error running diff"); |
42 | html("</tr></td>"); |
63 | html("</tr></td>"); |
43 | } |
64 | } |
44 | |
65 | |
45 | void cgit_print_diff(const char *old_hex, const char *new_hex, char *path) |
66 | void cgit_print_diff(const char *old_hex, const char *new_hex, char *path) |
46 | { |
67 | { |
47 | unsigned char sha1[20], sha2[20]; |
68 | unsigned char sha1[20], sha2[20]; |
@@ -58,19 +79,18 @@ void cgit_print_diff(const char *old_hex, const char *new_hex, char *path) |
58 | cgit_print_error(fmt("Bad object names: %s, %s", old_hex, new_hex)); |
79 | cgit_print_error(fmt("Bad object names: %s, %s", old_hex, new_hex)); |
59 | return; |
80 | return; |
60 | } |
81 | } |
61 | } |
82 | } |
62 | |
83 | |
63 | html("<table class='diff'>"); |
84 | html("<table class='diff'>"); |
64 | switch(type) { |
85 | switch(type) { |
65 | case OBJ_BLOB: |
86 | case OBJ_BLOB: |
66 | if (path) |
| |
67 | htmlf("<tr><th>%s</th></tr>", path); |
| |
68 | html("<tr><td>"); |
87 | html("<tr><td>"); |
| |
88 | header(sha1, path, sha2, path); |
69 | if (cgit_diff_files(sha1, sha2, print_line)) |
89 | if (cgit_diff_files(sha1, sha2, print_line)) |
70 | cgit_print_error("Error running diff"); |
90 | cgit_print_error("Error running diff"); |
71 | html("</tr></td>"); |
91 | html("</tr></td>"); |
72 | break; |
92 | break; |
73 | case OBJ_TREE: |
93 | case OBJ_TREE: |
74 | cgit_diff_tree(sha1, sha2, filepair_cb); |
94 | cgit_diff_tree(sha1, sha2, filepair_cb); |
75 | break; |
95 | break; |
76 | default: |
96 | default: |
|