Post by Robert DaileySo I set GIT_PAGER to 'echo custom pager' as you instructed, and I
noticed that wasn't being printed when I ran my git log alias. So what
I did after that was set GIT_TRACE=1 and here is the output I see
[...]
Does using an alias have something to do with this?
The aliases shouldn't matter (and I constructed a scenario like the one
you showed and it starts the pager for me on Linux). It's more like git
is deciding not to show a pager at all (e.g., it thinks your stdout is
not a tty). Does running:
git log
not use a pager, but:
git -p log
does? In that case, I think that your stdout is not a tty for some
reason.
If that is the case, try:
git -p lg
That _should_ turn on the pager, but I think it does not due to a bug
with setup_pager and aliases. Something like the patch below would make
it work (but if you are having to use "-p" manually, there is something
to fix in your cygwin environment, which does not think you are on a
terminal).
-Peff
---
diff --git a/cache.h b/cache.h
index dc040fb..ecc410e 100644
--- a/cache.h
+++ b/cache.h
@@ -1238,6 +1238,7 @@ static inline ssize_t write_str_in_full(int fd, const char *str)
/* pager.c */
extern void setup_pager(void);
+extern void setup_pager_with_options(int stdout_is_tty);
extern const char *pager_program;
extern int pager_in_use(void);
extern int pager_use_color;
diff --git a/git.c b/git.c
index 7cf2953..ad54891 100644
--- a/git.c
+++ b/git.c
@@ -27,7 +27,7 @@ static void commit_pager_choice(void) {
setenv("GIT_PAGER", "cat", 1);
break;
case 1:
- setup_pager();
+ setup_pager_with_options(1);
break;
default:
break;
diff --git a/pager.c b/pager.c
index 0cc75a8..b28125d 100644
--- a/pager.c
+++ b/pager.c
@@ -62,7 +62,12 @@ const char *git_pager(int stdout_is_tty)
void setup_pager(void)
{
- const char *pager = git_pager(isatty(1));
+ setup_pager_with_options(isatty(1));
+}
+
+void setup_pager_with_options(int stdout_is_tty)
+{
+ const char *pager = git_pager(stdout_is_tty);
if (!pager || pager_in_use())
return;