提交 1fda91b5 编写于 作者: L Linus Torvalds 提交者: Junio C Hamano

Fix 'git log' early pager startup error case

We start the pager too early for several git commands, which results in
the errors sometimes going to the pager rather than show up as errors.

This is often hidden by the fact that we pass in '-X' to less by default,
which causes 'less' to exit for small output, but if you do

  export LESS=-S

you can then clearly see the problem by doing

  git log --prretty

which shows the error message ("fatal: unrecognized argument: --prretty")
being sent to the pager.

This happens for pretty much all git commands that use USE_PAGER, and then
check arguments separately. But "git diff" does it too early too (even
though it does an explicit setup_pager() call)

This only fixes it for the trivial "git log" family case.
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 ef45e4da
...@@ -125,6 +125,7 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix, ...@@ -125,6 +125,7 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,
rev->show_decorations = 1; rev->show_decorations = 1;
load_ref_decorations(decoration_style); load_ref_decorations(decoration_style);
} }
setup_pager();
} }
/* /*
...@@ -491,12 +492,6 @@ int cmd_log_reflog(int argc, const char **argv, const char *prefix) ...@@ -491,12 +492,6 @@ int cmd_log_reflog(int argc, const char **argv, const char *prefix)
rev.use_terminator = 1; rev.use_terminator = 1;
rev.always_show_header = 1; rev.always_show_header = 1;
/*
* We get called through "git reflog", so unlike the other log
* routines, we need to set up our pager manually..
*/
setup_pager();
return cmd_log_walk(&rev); return cmd_log_walk(&rev);
} }
......
...@@ -336,7 +336,7 @@ static void handle_internal_command(int argc, const char **argv) ...@@ -336,7 +336,7 @@ static void handle_internal_command(int argc, const char **argv)
{ "index-pack", cmd_index_pack }, { "index-pack", cmd_index_pack },
{ "init", cmd_init_db }, { "init", cmd_init_db },
{ "init-db", cmd_init_db }, { "init-db", cmd_init_db },
{ "log", cmd_log, RUN_SETUP | USE_PAGER }, { "log", cmd_log, RUN_SETUP },
{ "ls-files", cmd_ls_files, RUN_SETUP }, { "ls-files", cmd_ls_files, RUN_SETUP },
{ "ls-tree", cmd_ls_tree, RUN_SETUP }, { "ls-tree", cmd_ls_tree, RUN_SETUP },
{ "ls-remote", cmd_ls_remote }, { "ls-remote", cmd_ls_remote },
...@@ -380,7 +380,7 @@ static void handle_internal_command(int argc, const char **argv) ...@@ -380,7 +380,7 @@ static void handle_internal_command(int argc, const char **argv)
{ "send-pack", cmd_send_pack, RUN_SETUP }, { "send-pack", cmd_send_pack, RUN_SETUP },
{ "shortlog", cmd_shortlog, USE_PAGER }, { "shortlog", cmd_shortlog, USE_PAGER },
{ "show-branch", cmd_show_branch, RUN_SETUP }, { "show-branch", cmd_show_branch, RUN_SETUP },
{ "show", cmd_show, RUN_SETUP | USE_PAGER }, { "show", cmd_show, RUN_SETUP },
{ "status", cmd_status, RUN_SETUP | NEED_WORK_TREE }, { "status", cmd_status, RUN_SETUP | NEED_WORK_TREE },
{ "stripspace", cmd_stripspace }, { "stripspace", cmd_stripspace },
{ "symbolic-ref", cmd_symbolic_ref, RUN_SETUP }, { "symbolic-ref", cmd_symbolic_ref, RUN_SETUP },
...@@ -395,7 +395,7 @@ static void handle_internal_command(int argc, const char **argv) ...@@ -395,7 +395,7 @@ static void handle_internal_command(int argc, const char **argv)
{ "var", cmd_var }, { "var", cmd_var },
{ "verify-tag", cmd_verify_tag, RUN_SETUP }, { "verify-tag", cmd_verify_tag, RUN_SETUP },
{ "version", cmd_version }, { "version", cmd_version },
{ "whatchanged", cmd_whatchanged, RUN_SETUP | USE_PAGER }, { "whatchanged", cmd_whatchanged, RUN_SETUP },
{ "write-tree", cmd_write_tree, RUN_SETUP }, { "write-tree", cmd_write_tree, RUN_SETUP },
{ "verify-pack", cmd_verify_pack }, { "verify-pack", cmd_verify_pack },
{ "show-ref", cmd_show_ref, RUN_SETUP }, { "show-ref", cmd_show_ref, RUN_SETUP },
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册