From: Jonathan Nieder Date: Wed, 14 Apr 2010 02:23:15 GMT Subject: [PATCH 9/9 v2] config: run setup before commiting pager choice Message-ID: <20100414022315.GC22766@progeny.tock> In-Reply-To: <20100413023124.GI4118@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 --- Rebased for changes to t7006 in patches 2, 3, 4 v2. builtin/config.c | 6 ++---- git.c | 4 ++-- t/t7006-pager.sh | 22 ++++++++++++++++------ 3 files changed, 20 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 97ca5d6..d649f55 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 @@ -175,7 +175,7 @@ test_default_pager() { parse_args "$@" unset PAGER GIT_PAGER - git config --unset core.pager + git --no-pager config --unset core.pager rm -f default_pager_used $test_expectation SIMPLEPAGER "$cmd - default pager is used by default" " cat >$less <<-\EOF && @@ -196,7 +196,7 @@ test_PAGER_overrides() { parse_args "$@" unset GIT_PAGER - git config --unset core.pager + git --no-pager config --unset core.pager rm -f PAGER_used $test_expectation TTY "$cmd - PAGER overrides default pager" " PAGER='wc > PAGER_used' && @@ -235,7 +235,7 @@ test_core_pager() { $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_command && ${if_want_local_config}test -e core.pager_used " @@ -261,7 +261,7 @@ test_pager_subdir_helper() { stampname=\$(pwd)/core.pager_used && PAGER=wc && export PAGER stampname && - git config core.pager 'wc > \"\$stampname\"' && + git --no-pager config core.pager 'wc > \"\$stampname\"' && mkdir sub && ( cd sub && @@ -276,7 +276,7 @@ test_GIT_PAGER_overrides() { rm -f GIT_PAGER_used $test_expectation 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_command && @@ -326,4 +326,14 @@ test_core_pager_overrides expect_success 'git rev-list HEAD' test_core_pager_subdir expect_success 'git rev-list HEAD' test_GIT_PAGER_overrides expect_success 'git rev-list HEAD' +test_doesnt_paginate expect_success 'git config -l' +test_expect_success "set up 'git config' to use a pager" ' + git config pager.config true +' +test_default_pager expect_success 'git config -l' +test_PAGER_overrides expect_success 'git config -l' +test_core_pager_overrides expect_success 'git config -l' +test_core_pager_subdir expect_success 'git config -l' +test_GIT_PAGER_overrides expect_success 'git config -l' + test_done -- 1.7.0.4