author | Johan Herland <johan@herland.net> | 2010-06-24 15:52:57 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2010-07-18 08:53:48 (UTC) |
commit | 2cc8b99f083014c58d8937bfa4dcd2bc47cd7e58 (patch) (side-by-side diff) | |
tree | 48d555b15c0432bb98712d746100bf6c0fe2be4a | |
parent | d20313e3daf855ee5d4808e050f54614c200d7b1 (diff) | |
download | cgit-2cc8b99f083014c58d8937bfa4dcd2bc47cd7e58.zip cgit-2cc8b99f083014c58d8937bfa4dcd2bc47cd7e58.tar.gz cgit-2cc8b99f083014c58d8937bfa4dcd2bc47cd7e58.tar.bz2 |
Add URL parameter 'ignorews' for optionally ignoring whitespace in diffs
The new ctx.qry.ignorews variable is passed via cgit_diff_files() and
cgit_diff_tree() to Git's diff machinery. This is equivalent to passing
--ignore-all-space to 'git diff'.
Signed-off-by: Johan Herland <johan@herland.net>
-rw-r--r-- | cgit.c | 2 | ||||
-rw-r--r-- | cgit.h | 6 | ||||
-rw-r--r-- | shared.c | 11 | ||||
-rw-r--r-- | ui-diff.c | 11 | ||||
-rw-r--r-- | ui-log.c | 3 | ||||
-rw-r--r-- | ui-patch.c | 4 |
6 files changed, 25 insertions, 12 deletions
@@ -254,2 +254,4 @@ static void querystring_cb(const char *name, const char *value) ctx.qry.context = atoi(value); + } else if (!strcmp(name, "ignorews")) { + ctx.qry.ignorews = atoi(value); } @@ -148,2 +148,3 @@ struct cgit_query { int context; + int ignorews; char *vpath; @@ -277,3 +278,4 @@ extern int cgit_diff_files(const unsigned char *old_sha1, unsigned long *old_size, unsigned long *new_size, - int *binary, int context, linediff_fn fn); + int *binary, int context, int ignorews, + linediff_fn fn); @@ -281,3 +283,3 @@ extern void cgit_diff_tree(const unsigned char *old_sha1, const unsigned char *new_sha1, - filepair_fn fn, const char *prefix); + filepair_fn fn, const char *prefix, int ignorews); @@ -265,3 +265,3 @@ int cgit_diff_files(const unsigned char *old_sha1, unsigned long *new_size, int *binary, int context, - linediff_fn fn) + int ignorews, linediff_fn fn) { @@ -288,2 +288,4 @@ int cgit_diff_files(const unsigned char *old_sha1, diff_params.flags = XDF_NEED_MINIMAL; + if (ignorews) + diff_params.flags |= XDF_IGNORE_WHITESPACE; emit_params.ctxlen = context > 0 ? context : 3; @@ -298,3 +300,3 @@ void cgit_diff_tree(const unsigned char *old_sha1, const unsigned char *new_sha1, - filepair_fn fn, const char *prefix) + filepair_fn fn, const char *prefix, int ignorews) { @@ -309,2 +311,4 @@ void cgit_diff_tree(const unsigned char *old_sha1, DIFF_OPT_SET(&opt, RECURSIVE); + if (ignorews) + DIFF_XDL_SET(&opt, IGNORE_WHITESPACE); opt.format_callback = cgit_diff_tree_cb; @@ -333,3 +337,4 @@ void cgit_diff_commit(struct commit *commit, filepair_fn fn) old_sha1 = commit->parents->item->object.sha1; - cgit_diff_tree(old_sha1, commit->object.sha1, fn, NULL); + cgit_diff_tree(old_sha1, commit->object.sha1, fn, NULL, + ctx.qry.ignorews); } @@ -129,3 +129,3 @@ static void inspect_filepair(struct diff_filepair *pair) cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, &new_size, - &binary, 0, count_diff_lines); + &binary, 0, ctx.qry.ignorews, count_diff_lines); if (files >= slots) { @@ -176,3 +176,4 @@ void cgit_print_diffstat(const unsigned char *old_sha1, max_changes = 0; - cgit_diff_tree(old_sha1, new_sha1, inspect_filepair, prefix); + cgit_diff_tree(old_sha1, new_sha1, inspect_filepair, prefix, + ctx.qry.ignorews); for(i = 0; i<files; i++) @@ -298,3 +299,4 @@ static void filepair_cb(struct diff_filepair *pair) if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, - &new_size, &binary, ctx.qry.context, print_line_fn)) + &new_size, &binary, ctx.qry.context, + ctx.qry.ignorews, print_line_fn)) cgit_print_error("Error running diff"); @@ -358,3 +360,4 @@ void cgit_print_diff(const char *new_rev, const char *old_rev, const char *prefi } - cgit_diff_tree(old_rev_sha1, new_rev_sha1, filepair_cb, prefix); + cgit_diff_tree(old_rev_sha1, new_rev_sha1, filepair_cb, prefix, + ctx.qry.ignorews); if (!use_ssdiff) @@ -35,3 +35,4 @@ void inspect_files(struct diff_filepair *pair) cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, - &new_size, &binary, 0, count_lines); + &new_size, &binary, 0, ctx.qry.ignorews, + count_lines); } @@ -73,3 +73,3 @@ static void filepair_cb(struct diff_filepair *pair) if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, - &new_size, &binary, 0, print_line)) + &new_size, &binary, 0, 0, print_line)) html("Error running diff"); @@ -126,3 +126,3 @@ void cgit_print_patch(char *hex, const char *prefix) htmlf("(limited to '%s')\n\n", prefix); - cgit_diff_tree(old_sha1, sha1, filepair_cb, prefix); + cgit_diff_tree(old_sha1, sha1, filepair_cb, prefix, 0); html("--\n"); |