[PATCH 0/3] fix "v"iew subcommand in "git am -i"
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 16, 2016, 23:06 UTC
- Message-ID
- <1455664017-27588-1-git-send-email-gitster@pobox.com>
The 'v'iew subcommand of the interactive mode of "git am -i" was broken by the rewrite to C we did at around 2.6.0 timeframe at 7ff26832 (builtin-am: implement -i/--interactive, 2015-08-04); we used to spawn the pager via the shell, accepting things like
PAGER='less -S'
in the environment, but the rewrite forgot and tried to directly spawn a command whose name is the entire string.
The bug is understandable, because there are things we need to do other than just run_command() to run the pager, such as running it with default LESS/LV settings and running it via the shell, but these pieces of necessary knowledge about what is the right thing to do are hoarded by the setup_pager() entry point, which is only good if we are feeding our own standard output to the pager. A codepath that wants to run the pager but not on our output needs to do the right thing on its own.
So the first patch in this series factors out a helper function to let the caller run the pager the right way. They make the third patch to fix the breakage in "am" trivial.
I debated myself where the call of git_pager() should go (it could be argued that it conceptually belongs to the new prepare_pager_args() helper), but I opted for a simpler change.
Junio C Hamano (3): pager: lose a separate argv[] pager: factor out a helper to prepare a child process to run the pager am -i: fix "v"iew
builtin/am.c | 5 +++-- cache.h | 4 ++++ pager.c | 26 ++++++++++++++++++-------- 3 files changed, 25 insertions(+), 10 deletions(-)
-- 2.7.1-460-gd45d0a4