Commit 1aa5318a by Carlos Martín Nieto

diff: allow asking for diffs with no context

Previously, 0 meant default. This is problematic, as asking for 0
context lines is a valid thing to do.

Change GIT_DIFF_OPTIONS_INIT to default to three and stop treating 0
as a magic value. In case no options are provided, make sure the
options in the diff object default to 3.
parent 0887b580
...@@ -289,7 +289,7 @@ typedef struct { ...@@ -289,7 +289,7 @@ typedef struct {
} git_diff_options; } git_diff_options;
#define GIT_DIFF_OPTIONS_VERSION 1 #define GIT_DIFF_OPTIONS_VERSION 1
#define GIT_DIFF_OPTIONS_INIT {GIT_DIFF_OPTIONS_VERSION} #define GIT_DIFF_OPTIONS_INIT {GIT_DIFF_OPTIONS_VERSION, GIT_DIFF_NORMAL, 3}
/** /**
* When iterating over a diff, callback that will be made per file. * When iterating over a diff, callback that will be made per file.
......
...@@ -291,8 +291,11 @@ static git_diff_list *git_diff_list_alloc( ...@@ -291,8 +291,11 @@ static git_diff_list *git_diff_list_alloc(
* - diff.noprefix * - diff.noprefix
*/ */
if (opts == NULL) if (opts == NULL) {
/* Make sure we default to 3 lines */
diff->opts.context_lines = 3;
return diff; return diff;
}
memcpy(&diff->opts, opts, sizeof(git_diff_options)); memcpy(&diff->opts, opts, sizeof(git_diff_options));
......
...@@ -202,7 +202,7 @@ static void setup_xdiff_options( ...@@ -202,7 +202,7 @@ static void setup_xdiff_options(
memset(param, 0, sizeof(xpparam_t)); memset(param, 0, sizeof(xpparam_t));
cfg->ctxlen = cfg->ctxlen =
(!opts || !opts->context_lines) ? 3 : opts->context_lines; (!opts) ? 3 : opts->context_lines;
cfg->interhunkctxlen = cfg->interhunkctxlen =
(!opts) ? 0 : opts->interhunk_lines; (!opts) ? 0 : opts->interhunk_lines;
......
...@@ -10,6 +10,8 @@ static diff_expects expect; ...@@ -10,6 +10,8 @@ static diff_expects expect;
void test_diff_tree__initialize(void) void test_diff_tree__initialize(void)
{ {
GIT_INIT_STRUCTURE(&opts, GIT_DIFF_OPTIONS_VERSION); GIT_INIT_STRUCTURE(&opts, GIT_DIFF_OPTIONS_VERSION);
/* The default context lines is set by _INIT which we can't use here */
opts.context_lines = 3;
memset(&expect, 0, sizeof(expect)); memset(&expect, 0, sizeof(expect));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment