[PATCH 11/10] support pager.* for aliases
- From
Jeff King <peff@peff.net>
- Date
- Aug 18, 2011, 21:59 UTC
- Message-ID
- <20110818215909.GA7799@sigill.intra.peff.net>
- In-Reply-To
- <20110818215820.GA7767@sigill.intra.peff.net>
Until this patch, doing something like:
git config alias.foo log git config pager.foo /some/specific/pager
would not respect pager.foo at all. With this patch, we will use pager.foo for the "foo" alias. We will also fallback to pager.log if "foo" is a non-shell alias that uses the "log" command (but any pager.foo overrides pager.log).
Signed-off-by: Jeff King <peff@peff.net> --- git.c | 3 +++ t/t7006-pager.sh | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/git.c b/git.c index 8828c18..375e9b2 100644 --- a/git.c +++ b/git.c @@ -180,6 +180,9 @@ static int handle_alias(int *argcp, const char ***argv) alias_command = (*argv)[0]; alias_string = alias_lookup(alias_command); if (alias_string) { + if (use_pager == -1) + use_pager = check_pager_config(alias_command); + if (alias_string[0] == '!') { const char **alias_argv; int argc = *argcp, i; diff --git a/t/t7006-pager.sh b/t/t7006-pager.sh index 4582336..a8c6e85 100755 --- a/t/t7006-pager.sh +++ b/t/t7006-pager.sh @@ -450,4 +450,35 @@ test_expect_success TTY 'command-specific pager overridden by environment' ' test_cmp expect actual ' +test_expect_success TTY 'command-specific pager works for aliases' ' + sane_unset PAGER GIT_PAGER && + echo "foo:initial" >expect && + >actual && + test_config alias.aliaslog "log --format=%s" && + test_config pager.aliaslog "sed s/^/foo:/ >actual" && + test_terminal git aliaslog -1 && + test_cmp expect actual +' + +test_expect_success TTY 'non-shell alias falls back to command pager config' ' + sane_unset PAGER GIT_PAGER && + echo "foo:initial" >expect && + >actual && + test_config alias.aliaslog "log --format=%s" && + test_config pager.log "sed s/^/foo:/ >actual" && + test_terminal git aliaslog -1 && + test_cmp expect actual +' + +test_expect_success TTY 'alias-specific pager can override aliased command' ' + sane_unset PAGER GIT_PAGER && + >expect && + >actual && + test_config alias.aliaslog "log --format=%s" && + test_config pager.log "sed s/^/log:/ >actual" && + test_config pager.aliaslog false && + test_terminal git aliaslog -1 && + test_cmp expect actual +' + test_done
-- 1.7.6.10.g62f04