[PATCH] Replace git --paginate by git --pager[=PAGER_CMD].

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux