The previous one was -p|--paginate, but doesn't accept a natural negation. This patch changes it to -p|--pager|--pager=PAGER_CMD, which makes the negation --no-pager more natural, and provides a simple way to override the pager command (git --pager=CMD is equivalent to GIT_PAGER=CMD git with most shells). --paginate is kept as a backward-compatibility, deprecated option. Suggested-by: David Kastrup <dak@xxxxxxx> Idea-acked-by: Jakub Narebski <jnareb@xxxxxxxxx> Signed-off-by: Matthieu Moy <Matthieu.Moy@xxxxxxx> --- Documentation/git.txt | 8 +++++--- git.c | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Documentation/git.txt b/Documentation/git.txt index 3b0d530..444823d 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -10,7 +10,7 @@ SYNOPSIS -------- [verse] 'git' [--version] [--exec-path[=GIT_EXEC_PATH]] - [-p|--paginate|--no-pager] + [-p|--pager[=PAGER_CMD]|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS] @@ -101,8 +101,10 @@ OPTIONS environment variable. If no path is given 'git' will print the current setting and then exit. --p|--paginate:: - Pipe all output into 'less' (or if set, $PAGER). +-p|--pager[=PAGER_CMD]:: + Pipe all output into 'less' (or if set, PAGER_CMD, + `$GIT_PAGER`, or `$PAGER`, in this order of preference). + --paginate is provided as a deprecated alias for -p. --no-pager:: Do not pipe git output into a pager. diff --git a/git.c b/git.c index c46691e..4c626b5 100644 --- a/git.c +++ b/git.c @@ -4,7 +4,9 @@ #include "quote.h" const char git_usage_string[] = - "git [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]"; + "git [--version] [--exec-path[=GIT_EXEC_PATH]]\n" + " [-p|--pager[=PAGER_CMD]|--no-pager] [--bare]\n" + " [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]"; static void prepend_to_path(const char *dir, int len) { @@ -56,8 +58,18 @@ static int handle_options(const char*** argv, int* argc, int* envchanged) puts(git_exec_path()); exit(0); } - } else if (!strcmp(cmd, "-p") || !strcmp(cmd, "--paginate")) { + } else if (!strcmp(cmd, "-p") || + /* + * Deprecated, but kept for backward + * compatibility + */ + !strcmp(cmd, "--paginate")) { setup_pager(); + } else if (!prefixcmp(cmd, "--pager")) { + cmd += 7; + if (*cmd == '=') + setenv("GIT_PAGER", cmd+1, 1); + setup_pager(); } else if (!strcmp(cmd, "--no-pager")) { setenv("GIT_PAGER", "cat", 1); if (envchanged) -- 1.5.3.rc5.17.g1cd0d-dirty - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html