diff options
| author | 2010-06-22 23:16:12 (JST) | |
|---|---|---|
| committer | 2010-06-22 23:16:12 (JST) | |
| commit | 6f92f332e6a9ee3e16051bda9fe148607af67f65 (patch) | |
| tree | 49cb7d145fbf40793b220efdc92cd80ab2c6ca05 | |
| parent | 37a24e4e39737edaa5cdde501346a65eeb280e63 (diff) | |
| parent | d20313e3daf855ee5d4808e050f54614c200d7b1 (diff) | |
| download | cgit-6f92f332e6a9ee3e16051bda9fe148607af67f65.zip cgit-6f92f332e6a9ee3e16051bda9fe148607af67f65.tar.gz | |
Merge branch 'jh/context-lines'
Conflicts:
cgit.c
cgit.h
| -rw-r--r-- | cgit.c | 2 | ||||
| -rw-r--r-- | cgit.h | 3 | ||||
| -rw-r--r-- | shared.c | 5 | ||||
| -rw-r--r-- | ui-diff.c | 14 | ||||
| -rw-r--r-- | ui-log.c | 2 | ||||
| -rw-r--r-- | ui-patch.c | 2 | ||||
| -rw-r--r-- | ui-shared.c | 14 |
7 files changed, 34 insertions, 8 deletions
| @@ -258,6 +258,8 @@ static void querystring_cb(const char *name, const char *value) | |||
| 258 | ctx.qry.ssdiff = atoi(value); | 258 | ctx.qry.ssdiff = atoi(value); |
| 259 | } else if (!strcmp(name, "all")) { | 259 | } else if (!strcmp(name, "all")) { |
| 260 | ctx.qry.show_all = atoi(value); | 260 | ctx.qry.show_all = atoi(value); |
| 261 | } else if (!strcmp(name, "context")) { | ||
| 262 | ctx.qry.context = atoi(value); | ||
| 261 | } | 263 | } |
| 262 | } | 264 | } |
| 263 | 265 | ||
| @@ -147,6 +147,7 @@ struct cgit_query { | |||
| 147 | int showmsg; | 147 | int showmsg; |
| 148 | int ssdiff; | 148 | int ssdiff; |
| 149 | int show_all; | 149 | int show_all; |
| 150 | int context; | ||
| 150 | char *vpath; | 151 | char *vpath; |
| 151 | }; | 152 | }; |
| 152 | 153 | ||
| @@ -278,7 +279,7 @@ extern void *cgit_free_commitinfo(struct commitinfo *info); | |||
| 278 | extern int cgit_diff_files(const unsigned char *old_sha1, | 279 | extern int cgit_diff_files(const unsigned char *old_sha1, |
| 279 | const unsigned char *new_sha1, | 280 | const unsigned char *new_sha1, |
| 280 | unsigned long *old_size, unsigned long *new_size, | 281 | unsigned long *old_size, unsigned long *new_size, |
| 281 | int *binary, linediff_fn fn); | 282 | int *binary, int context, linediff_fn fn); |
| 282 | 283 | ||
| 283 | extern void cgit_diff_tree(const unsigned char *old_sha1, | 284 | extern void cgit_diff_tree(const unsigned char *old_sha1, |
| 284 | const unsigned char *new_sha1, | 285 | const unsigned char *new_sha1, |
| @@ -263,7 +263,8 @@ int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf) | |||
| 263 | 263 | ||
| 264 | int cgit_diff_files(const unsigned char *old_sha1, | 264 | int cgit_diff_files(const unsigned char *old_sha1, |
| 265 | const unsigned char *new_sha1, unsigned long *old_size, | 265 | const unsigned char *new_sha1, unsigned long *old_size, |
| 266 | unsigned long *new_size, int *binary, linediff_fn fn) | 266 | unsigned long *new_size, int *binary, int context, |
| 267 | linediff_fn fn) | ||
| 267 | { | 268 | { |
| 268 | mmfile_t file1, file2; | 269 | mmfile_t file1, file2; |
| 269 | xpparam_t diff_params; | 270 | xpparam_t diff_params; |
| @@ -290,7 +291,7 @@ int cgit_diff_files(const unsigned char *old_sha1, | |||
| 290 | memset(&emit_params, 0, sizeof(emit_params)); | 291 | memset(&emit_params, 0, sizeof(emit_params)); |
| 291 | memset(&emit_cb, 0, sizeof(emit_cb)); | 292 | memset(&emit_cb, 0, sizeof(emit_cb)); |
| 292 | diff_params.flags = XDF_NEED_MINIMAL; | 293 | diff_params.flags = XDF_NEED_MINIMAL; |
| 293 | emit_params.ctxlen = 3; | 294 | emit_params.ctxlen = context > 0 ? context : 3; |
| 294 | emit_params.flags = XDL_EMIT_FUNCNAMES; | 295 | emit_params.flags = XDL_EMIT_FUNCNAMES; |
| 295 | emit_cb.outf = filediff_cb; | 296 | emit_cb.outf = filediff_cb; |
| 296 | emit_cb.priv = fn; | 297 | emit_cb.priv = fn; |
| @@ -127,7 +127,7 @@ static void inspect_filepair(struct diff_filepair *pair) | |||
| 127 | lines_added = 0; | 127 | lines_added = 0; |
| 128 | lines_removed = 0; | 128 | lines_removed = 0; |
| 129 | cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, &new_size, | 129 | cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, &new_size, |
| 130 | &binary, count_diff_lines); | 130 | &binary, 0, count_diff_lines); |
| 131 | if (files >= slots) { | 131 | if (files >= slots) { |
| 132 | if (slots == 0) | 132 | if (slots == 0) |
| 133 | slots = 4; | 133 | slots = 4; |
| @@ -156,13 +156,21 @@ static void inspect_filepair(struct diff_filepair *pair) | |||
| 156 | void cgit_print_diffstat(const unsigned char *old_sha1, | 156 | void cgit_print_diffstat(const unsigned char *old_sha1, |
| 157 | const unsigned char *new_sha1, const char *prefix) | 157 | const unsigned char *new_sha1, const char *prefix) |
| 158 | { | 158 | { |
| 159 | int i; | 159 | int i, save_context = ctx.qry.context; |
| 160 | 160 | ||
| 161 | html("<div class='diffstat-header'>"); | 161 | html("<div class='diffstat-header'>"); |
| 162 | cgit_diff_link("Diffstat", NULL, NULL, ctx.qry.head, ctx.qry.sha1, | 162 | cgit_diff_link("Diffstat", NULL, NULL, ctx.qry.head, ctx.qry.sha1, |
| 163 | ctx.qry.sha2, NULL, 0); | 163 | ctx.qry.sha2, NULL, 0); |
| 164 | if (prefix) | 164 | if (prefix) |
| 165 | htmlf(" (limited to '%s')", prefix); | 165 | htmlf(" (limited to '%s')", prefix); |
| 166 | html(" ("); | ||
| 167 | ctx.qry.context = (save_context > 0 ? save_context : 3) << 1; | ||
| 168 | cgit_self_link("more", NULL, NULL, &ctx); | ||
| 169 | html("/"); | ||
| 170 | ctx.qry.context = (save_context > 3 ? save_context : 3) >> 1; | ||
| 171 | cgit_self_link("less", NULL, NULL, &ctx); | ||
| 172 | ctx.qry.context = save_context; | ||
| 173 | html(" context)"); | ||
| 166 | html("</div>"); | 174 | html("</div>"); |
| 167 | html("<table summary='diffstat' class='diffstat'>"); | 175 | html("<table summary='diffstat' class='diffstat'>"); |
| 168 | max_changes = 0; | 176 | max_changes = 0; |
| @@ -288,7 +296,7 @@ static void filepair_cb(struct diff_filepair *pair) | |||
| 288 | return; | 296 | return; |
| 289 | } | 297 | } |
| 290 | if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, | 298 | if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, |
| 291 | &new_size, &binary, print_line_fn)) | 299 | &new_size, &binary, ctx.qry.context, print_line_fn)) |
| 292 | cgit_print_error("Error running diff"); | 300 | cgit_print_error("Error running diff"); |
| 293 | if (binary) { | 301 | if (binary) { |
| 294 | if (use_ssdiff) | 302 | if (use_ssdiff) |
| @@ -33,7 +33,7 @@ void inspect_files(struct diff_filepair *pair) | |||
| 33 | files++; | 33 | files++; |
| 34 | if (ctx.repo->enable_log_linecount) | 34 | if (ctx.repo->enable_log_linecount) |
| 35 | cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, | 35 | cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, |
| 36 | &new_size, &binary, count_lines); | 36 | &new_size, &binary, 0, count_lines); |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | void show_commit_decorations(struct commit *commit) | 39 | void show_commit_decorations(struct commit *commit) |
| @@ -71,7 +71,7 @@ static void filepair_cb(struct diff_filepair *pair) | |||
| 71 | return; | 71 | return; |
| 72 | } | 72 | } |
| 73 | if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, | 73 | if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, |
| 74 | &new_size, &binary, print_line)) | 74 | &new_size, &binary, 0, print_line)) |
| 75 | html("Error running diff"); | 75 | html("Error running diff"); |
| 76 | if (binary) | 76 | if (binary) |
| 77 | html("Binary files differ\n"); | 77 | html("Binary files differ\n"); |
diff --git a/ui-shared.c b/ui-shared.c index e991799..c99bcec 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
| @@ -341,6 +341,13 @@ void cgit_commit_link(char *name, const char *title, const char *class, | |||
| 341 | if ((ctx.qry.ssdiff && !toggle_ssdiff) || (!ctx.qry.ssdiff && toggle_ssdiff)) { | 341 | if ((ctx.qry.ssdiff && !toggle_ssdiff) || (!ctx.qry.ssdiff && toggle_ssdiff)) { |
| 342 | html(delim); | 342 | html(delim); |
| 343 | html("ss=1"); | 343 | html("ss=1"); |
| 344 | delim = "&"; | ||
| 345 | } | ||
| 346 | if (ctx.qry.context > 0 && ctx.qry.context != 3) { | ||
| 347 | html(delim); | ||
| 348 | html("context="); | ||
| 349 | htmlf("%d", ctx.qry.context); | ||
| 350 | delim = "&"; | ||
| 344 | } | 351 | } |
| 345 | html("'>"); | 352 | html("'>"); |
| 346 | html_txt(name); | 353 | html_txt(name); |
| @@ -382,6 +389,13 @@ void cgit_diff_link(const char *name, const char *title, const char *class, | |||
| 382 | if ((ctx.qry.ssdiff && !toggle_ssdiff) || (!ctx.qry.ssdiff && toggle_ssdiff)) { | 389 | if ((ctx.qry.ssdiff && !toggle_ssdiff) || (!ctx.qry.ssdiff && toggle_ssdiff)) { |
| 383 | html(delim); | 390 | html(delim); |
| 384 | html("ss=1"); | 391 | html("ss=1"); |
| 392 | delim = "&"; | ||
| 393 | } | ||
| 394 | if (ctx.qry.context > 0 && ctx.qry.context != 3) { | ||
| 395 | html(delim); | ||
| 396 | html("context="); | ||
| 397 | htmlf("%d", ctx.qry.context); | ||
| 398 | delim = "&"; | ||
| 385 | } | 399 | } |
| 386 | html("'>"); | 400 | html("'>"); |
| 387 | html_txt(name); | 401 | html_txt(name); |
