From: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> For the pager choice (and the choice to paginate in the first place) to reflect the current repository configuration, the repository needs to be searched for first. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- That’s the end of the mini-series. I hope you enjoyed reading it as much as I did adapting it. Looking forward to your thoughts, Jonathan builtin/config.c | 6 ++---- git.c | 4 ++-- t/t7006-pager.sh | 16 ++++++++++------ 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/builtin/config.c b/builtin/config.c index 4bc46b1..ecc8f87 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -326,11 +326,9 @@ static int get_colorbool(int print) return get_colorbool_found ? 0 : 1; } -int cmd_config(int argc, const char **argv, const char *unused_prefix) +int cmd_config(int argc, const char **argv, const char *prefix) { - int nongit; char *value; - const char *prefix = setup_git_directory_gently(&nongit); config_exclusive_filename = getenv(CONFIG_ENVIRONMENT); @@ -409,7 +407,7 @@ int cmd_config(int argc, const char **argv, const char *unused_prefix) } else if (actions == ACTION_EDIT) { check_argc(argc, 0, 0); - if (!config_exclusive_filename && nongit) + if (!config_exclusive_filename && !startup_info->have_repository) die("not in a git directory"); git_config(git_default_config, NULL); launch_editor(config_exclusive_filename ? diff --git a/git.c b/git.c index 56e93cf..0a0d9eb 100644 --- a/git.c +++ b/git.c @@ -309,7 +309,7 @@ static void handle_internal_command(int argc, const char **argv) { "clean", cmd_clean, RUN_SETUP | NEED_WORK_TREE }, { "commit", cmd_commit, RUN_SETUP | NEED_WORK_TREE }, { "commit-tree", cmd_commit_tree, RUN_SETUP }, - { "config", cmd_config }, + { "config", cmd_config, RUN_SETUP_GENTLY }, { "count-objects", cmd_count_objects, RUN_SETUP }, { "describe", cmd_describe, RUN_SETUP }, { "diff", cmd_diff }, @@ -366,7 +366,7 @@ static void handle_internal_command(int argc, const char **argv) { "reflog", cmd_reflog, RUN_SETUP }, { "remote", cmd_remote, RUN_SETUP }, { "replace", cmd_replace, RUN_SETUP }, - { "repo-config", cmd_config }, + { "repo-config", cmd_config, RUN_SETUP_GENTLY }, { "rerere", cmd_rerere, RUN_SETUP }, { "reset", cmd_reset, RUN_SETUP }, { "rev-list", cmd_rev_list, RUN_SETUP }, diff --git a/t/t7006-pager.sh b/t/t7006-pager.sh index 237a689..e58b14d 100755 --- a/t/t7006-pager.sh +++ b/t/t7006-pager.sh @@ -80,7 +80,7 @@ test_expect_success TTY 'git rev-list uses a pager if configured to' ' git config --unset pager.rev-list rm -f paginated.out -test_expect_failure TTY 'git config uses a pager if configured to' ' +test_expect_success TTY 'git config uses a pager if configured to' ' git config pager.config true && test_terminal git config --list && test -e paginated.out @@ -172,7 +172,7 @@ test_pager_choice() { fi unset PAGER GIT_PAGER - git config --unset core.pager + git --no-pager config --unset core.pager rm -f default_pager_used test_expect_success SIMPLEPAGER "$cmd - default pager is used by default" " cat > $less <<-\EOF && @@ -185,7 +185,7 @@ test_pager_choice() { " unset GIT_PAGER - git config --unset core.pager + git --no-pager config --unset core.pager rm -f PAGER_used test_expect_success TTY "$cmd - PAGER overrides default pager" " PAGER='wc > PAGER_used' && @@ -199,7 +199,7 @@ test_pager_choice() { $test_expectation TTY "$cmd - core.pager ${used_if_wanted}" " PAGER=wc && export PAGER && - git config core.pager 'wc > core.pager_used' && + git --no-pager config core.pager 'wc > core.pager_used' && $full_cmd && ${if_want_local_config}test -e core.pager_used " @@ -211,7 +211,7 @@ test_pager_choice() { PAGER=wc && stampname=\$(pwd)/core.pager_used && export PAGER stampname && - git config core.pager 'wc > \"\$stampname\"' && + git --no-pager config core.pager 'wc > \"\$stampname\"' && mkdir sub && ( cd sub && @@ -222,7 +222,7 @@ test_pager_choice() { rm -f GIT_PAGER_used test_expect_success TTY "$cmd - GIT_PAGER overrides core.pager" " - git config core.pager wc && + git --no-pager config core.pager wc && GIT_PAGER='wc > GIT_PAGER_used' && export GIT_PAGER && $full_cmd && @@ -259,4 +259,8 @@ doesnt_paginate 'git rev-list HEAD' git config pager.rev-list true test_pager_choice 'git rev-list HEAD' +doesnt_paginate 'git config -l' +git config pager.config true +test_pager_choice 'git config -l' + test_done -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html