提交 c4888677 编写于 作者: V Vegard Nossum 提交者: Junio C Hamano

diff: add interhunk context config option

The --inter-hunk-context= option was added in commit 6d0e674a
("diff: add option to show context between close hunks"). This patch
allows configuring a default for this option.
Signed-off-by: NVegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 d7dffce1
......@@ -60,6 +60,12 @@ diff.context::
Generate diffs with <n> lines of context instead of the default
of 3. This value is overridden by the -U option.
diff.interHunkContext::
Show the context between diff hunks, up to the specified number
of lines, thereby fusing the hunks that are close to each other.
This value serves as the default for the `--inter-hunk-context`
command line option.
diff.external::
If this config variable is set, diff generation is not
performed using the internal diff machinery, but using the
......
......@@ -511,6 +511,8 @@ endif::git-format-patch[]
--inter-hunk-context=<lines>::
Show the context between diff hunks, up to the specified number
of lines, thereby fusing hunks that are close to each other.
Defaults to `diff.interHunkContext` or 0 if the config option
is unset.
-W::
--function-context::
......
......@@ -32,6 +32,7 @@ static int diff_rename_limit_default = 400;
static int diff_suppress_blank_empty;
static int diff_use_color_default = -1;
static int diff_context_default = 3;
static int diff_interhunk_context_default;
static const char *diff_word_regex_cfg;
static const char *external_diff_cmd_cfg;
static const char *diff_order_file_cfg;
......@@ -239,6 +240,12 @@ int git_diff_ui_config(const char *var, const char *value, void *cb)
return -1;
return 0;
}
if (!strcmp(var, "diff.interhunkcontext")) {
diff_interhunk_context_default = git_config_int(var, value);
if (diff_interhunk_context_default < 0)
return -1;
return 0;
}
if (!strcmp(var, "diff.renames")) {
diff_detect_rename_default = git_config_rename(var, value);
return 0;
......@@ -3362,6 +3369,7 @@ void diff_setup(struct diff_options *options)
options->rename_limit = -1;
options->dirstat_permille = diff_dirstat_permille_default;
options->context = diff_context_default;
options->interhunkcontext = diff_interhunk_context_default;
options->ws_error_highlight = ws_error_highlight_default;
DIFF_OPT_SET(options, RENAME_EMPTY);
......
......@@ -16,11 +16,15 @@ f() {
}
t() {
use_config=
git config --unset diff.interHunkContext
case $# in
4) hunks=$4; cmd="diff -U$3";;
5) hunks=$5; cmd="diff -U$3 --inter-hunk-context=$4";;
6) hunks=$5; cmd="diff -U$3"; git config diff.interHunkContext $4; use_config="(diff.interHunkContext=$4) ";;
esac
label="$cmd, $1 common $2"
label="$use_config$cmd, $1 common $2"
file=f$1
expected=expected.$file.$3.$hunks
......@@ -89,4 +93,25 @@ t 9 lines 3 2
t 9 lines 3 2 2
t 9 lines 3 3 1
# use diff.interHunkContext?
t 1 line 0 0 2 config
t 1 line 0 1 1 config
t 1 line 0 2 1 config
t 9 lines 3 3 1 config
t 2 lines 0 0 2 config
t 2 lines 0 1 2 config
t 2 lines 0 2 1 config
t 3 lines 1 0 2 config
t 3 lines 1 1 1 config
t 3 lines 1 2 1 config
t 9 lines 3 2 2 config
t 9 lines 3 3 1 config
test_expect_success 'diff.interHunkContext invalid' '
git config diff.interHunkContext asdf &&
test_must_fail git diff &&
git config diff.interHunkContext -1 &&
test_must_fail git diff
'
test_done
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册