зеркало из https://github.com/microsoft/git.git
Merge branch 'vn/diff-ihc-config'
"git diff" learned diff.interHunkContext configuration variable that gives the default value for its --inter-hunk-context option. * vn/diff-ihc-config: diff: add interhunk context config option
This commit is contained in:
Коммит
8ec68d1ae2
|
@ -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::
|
||||
|
|
8
diff.c
8
diff.c
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче