diff options
Diffstat (limited to 'ui-diff.c')
-rw-r--r-- | ui-diff.c | 32 |
1 files changed, 26 insertions, 6 deletions
@@ -31,12 +31,33 @@ static void print_line(char *line, int len) | |||
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>"); |
@@ -63,9 +84,8 @@ void cgit_print_diff(const char *old_hex, const char *new_hex, char *path) | |||
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>"); |