From: Jonathan Nieder Date: Tue, 13 Apr 2010 02:31:24 GMT Subject: [PATCH 9/9] config: run setup before commiting pager choice Message-ID: <20100413023124.GI4118@progeny.tock> In-Reply-To: <20100413021153.GA3978@progeny.tock> From: Nguyễn Thái Ngọc Duy 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 Signed-off-by: Junio C Hamano Signed-off-by: Jonathan Nieder --- 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