All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] Clean way to disable pager
@ 2007-08-19 17:26 Matthieu Moy
  2007-08-19 17:41 ` Matthieu Moy
                   ` (4 more replies)
  0 siblings, 5 replies; 15+ messages in thread
From: Matthieu Moy @ 2007-08-19 17:26 UTC (permalink / raw)
  To: git

Hi,

The man page for git documents the -p option to _enable_ the paginated
output for git, which isn't very usefull since the commands that might
actually need paging have it enabled by default.

What I can't find is a clean way to _disable_ the pager. A hacky way
is to run "git whatever | cat", or "GIT_PAGER=cat git whatever". From
the code, it seems that git doesn't even launch the pager if it's set
to "cat".

I think that deserves an less-hacky, and documented way. I'd suggest a
--no-pager, or --dont-paginate, that would do the opposite of -p as a
global option for git.

Below is a patch that does this:




>From 2148c2564ca6480feaec9a9d091259032257918d Mon Sep 17 00:00:00 2001
From: Matthieu Moy <Matthieu.Moy@imag.fr>
Date: Sun, 19 Aug 2007 19:24:36 +0200
Subject: [PATCH] Add and document a global --no-pager option for git.

To keep the change small, this is done by setting GIT_PAGER to "cat". I'd
prefer not using global/environment variables for that, but it would
require a complete refactoring of options handling in git.
---
 Documentation/git.txt |    6 +++++-
 git.c                 |    6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/Documentation/git.txt b/Documentation/git.txt
index 8017997..707a756 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -9,7 +9,8 @@ git - the stupid content tracker
 SYNOPSIS
 --------
 [verse]
-'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate]
+'git' [--version] [--exec-path[=GIT_EXEC_PATH]] 
+    [-p|--paginate] [--no-pager]
     [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
     [--help] COMMAND [ARGS]
 
@@ -103,6 +104,9 @@ OPTIONS
 -p|--paginate::
        Pipe all output into 'less' (or if set, $PAGER).
 
+--no-pager::
+       Do not pipe git output into a pager.
+
 --git-dir=<path>::
        Set the path to the repository. This can also be controlled by
        setting the GIT_DIR environment variable.
diff --git a/git.c b/git.c
index cab0e72..f280e7d 100644
--- a/git.c
+++ b/git.c
@@ -4,7 +4,7 @@
 #include "quote.h"
 
 const char git_usage_string[] =
-       "git [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]";
+       "git [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate] [--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND
 [ARGS]";                                                                                                                                                   
 
 static void prepend_to_path(const char *dir, int len)
 {
@@ -58,6 +58,10 @@ static int handle_options(const char*** argv, int* argc, int* envchanged)
                        }
                } else if (!strcmp(cmd, "-p") || !strcmp(cmd, "--paginate")) {
                        setup_pager();
+               } else if (!strcmp(cmd, "--no-pager")) {
+                       setenv("GIT_PAGER", "cat", 1);
+                       if (envchanged)
+                               *envchanged = 1;
                } else if (!strcmp(cmd, "--git-dir")) {
                        if (*argc < 2) {
                                fprintf(stderr, "No directory given for --git-dir.\n" );
-- 
1.5.3.rc0.64.gf4f4a-dirty



-- 
Matthieu

^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2007-08-21  9:19 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-19 17:26 [RFC] Clean way to disable pager Matthieu Moy
2007-08-19 17:41 ` Matthieu Moy
2007-08-19 17:52 ` Linus Torvalds
2007-08-19 18:24 ` Brian Gernhardt
2007-08-19 18:52 ` Junio C Hamano
2007-08-19 19:44   ` Matthieu Moy
2007-08-19 21:59     ` Adam Roben
2007-08-19 22:37       ` David Kastrup
2007-08-20  8:15         ` Matthieu Moy
2007-08-21  2:11           ` Jakub Narebski
2007-08-21  8:37             ` [PATCH] Replace git --paginate by git --pager[=PAGER_CMD] Matthieu Moy
2007-08-21  8:42               ` Johannes Schindelin
2007-08-21  8:51                 ` Matthieu Moy
2007-08-21  9:19                   ` David Kastrup
2007-08-19 21:28 ` [RFC] Clean way to disable pager Alex Riesen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.