зеркало из https://github.com/microsoft/git.git
Merge branch 'ma/config-page-only-in-list-mode'
In a way similar to how "git tag" learned to honor the pager setting only in the list mode, "git config" learned to ignore the pager setting when it is used for setting values (i.e. when the purpose of the operation is not to "show"). * ma/config-page-only-in-list-mode: config: change default of `pager.config` to "on" config: respect `pager.config` in list/get-mode only t7006: add tests for how git config paginates
This commit is contained in:
Коммит
75901dfd52
|
@ -233,6 +233,12 @@ See also <<FILES>>.
|
|||
using `--file`, `--global`, etc) and `on` when searching all
|
||||
config files.
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
`pager.config` is only respected when listing configuration, i.e., when
|
||||
using `--list` or any of the `--get-*` which may return multiple results.
|
||||
The default is to use a pager.
|
||||
|
||||
[[FILES]]
|
||||
FILES
|
||||
-----
|
||||
|
|
|
@ -48,6 +48,13 @@ static int show_origin;
|
|||
#define ACTION_GET_COLORBOOL (1<<14)
|
||||
#define ACTION_GET_URLMATCH (1<<15)
|
||||
|
||||
/*
|
||||
* The actions "ACTION_LIST | ACTION_GET_*" which may produce more than
|
||||
* one line of output and which should therefore be paged.
|
||||
*/
|
||||
#define PAGING_ACTIONS (ACTION_LIST | ACTION_GET_ALL | \
|
||||
ACTION_GET_REGEXP | ACTION_GET_URLMATCH)
|
||||
|
||||
#define TYPE_BOOL (1<<0)
|
||||
#define TYPE_INT (1<<1)
|
||||
#define TYPE_BOOL_OR_INT (1<<2)
|
||||
|
@ -594,6 +601,9 @@ int cmd_config(int argc, const char **argv, const char *prefix)
|
|||
usage_with_options(builtin_config_usage, builtin_config_options);
|
||||
}
|
||||
|
||||
if (actions & PAGING_ACTIONS)
|
||||
setup_auto_pager("config", 1);
|
||||
|
||||
if (actions == ACTION_LIST) {
|
||||
check_argc(argc, 0, 0);
|
||||
if (config_with_options(show_all_config, NULL,
|
||||
|
|
2
git.c
2
git.c
|
@ -389,7 +389,7 @@ static struct cmd_struct commands[] = {
|
|||
{ "column", cmd_column, RUN_SETUP_GENTLY },
|
||||
{ "commit", cmd_commit, RUN_SETUP | NEED_WORK_TREE },
|
||||
{ "commit-tree", cmd_commit_tree, RUN_SETUP },
|
||||
{ "config", cmd_config, RUN_SETUP_GENTLY },
|
||||
{ "config", cmd_config, RUN_SETUP_GENTLY | DELAY_PAGER_CONFIG },
|
||||
{ "count-objects", cmd_count_objects, RUN_SETUP },
|
||||
{ "credential", cmd_credential, RUN_SETUP_GENTLY },
|
||||
{ "describe", cmd_describe, RUN_SETUP },
|
||||
|
|
|
@ -110,13 +110,6 @@ test_expect_success TTY 'configuration can disable pager' '
|
|||
! test -e paginated.out
|
||||
'
|
||||
|
||||
test_expect_success TTY 'git config uses a pager if configured to' '
|
||||
rm -f paginated.out &&
|
||||
test_config pager.config true &&
|
||||
test_terminal git config --list &&
|
||||
test -e paginated.out
|
||||
'
|
||||
|
||||
test_expect_success TTY 'configuration can enable pager (from subdir)' '
|
||||
rm -f paginated.out &&
|
||||
mkdir -p subdir &&
|
||||
|
@ -252,6 +245,48 @@ test_expect_success TTY 'git branch --set-upstream-to ignores pager.branch' '
|
|||
! test -e paginated.out
|
||||
'
|
||||
|
||||
test_expect_success TTY 'git config ignores pager.config when setting' '
|
||||
rm -f paginated.out &&
|
||||
test_terminal git -c pager.config config foo.bar bar &&
|
||||
! test -e paginated.out
|
||||
'
|
||||
|
||||
test_expect_success TTY 'git config --edit ignores pager.config' '
|
||||
rm -f paginated.out editor.used &&
|
||||
write_script editor <<-\EOF &&
|
||||
touch editor.used
|
||||
EOF
|
||||
EDITOR=./editor test_terminal git -c pager.config config --edit &&
|
||||
! test -e paginated.out &&
|
||||
test -e editor.used
|
||||
'
|
||||
|
||||
test_expect_success TTY 'git config --get ignores pager.config' '
|
||||
rm -f paginated.out &&
|
||||
test_terminal git -c pager.config config --get foo.bar &&
|
||||
! test -e paginated.out
|
||||
'
|
||||
|
||||
test_expect_success TTY 'git config --get-urlmatch defaults to paging' '
|
||||
rm -f paginated.out &&
|
||||
test_terminal git -c http."https://foo.com/".bar=foo \
|
||||
config --get-urlmatch http https://foo.com &&
|
||||
test -e paginated.out
|
||||
'
|
||||
|
||||
test_expect_success TTY 'git config --get-all respects pager.config' '
|
||||
rm -f paginated.out &&
|
||||
test_terminal git -c pager.config=false config --get-all foo.bar &&
|
||||
! test -e paginated.out
|
||||
'
|
||||
|
||||
test_expect_success TTY 'git config --list defaults to paging' '
|
||||
rm -f paginated.out &&
|
||||
test_terminal git config --list &&
|
||||
test -e paginated.out
|
||||
'
|
||||
|
||||
|
||||
# A colored commit log will begin with an appropriate ANSI escape
|
||||
# for the first color; the text "commit" comes later.
|
||||
colorful() {
|
||||
|
|
Загрузка…
Ссылка в новой задаче