Re: fatal output from git-show really wants a terminal
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:45:46
Junio C Hamano [off-list ref] writes:
quoted
Isn't the issue about 61b8050 (sending errors to stdout under $PAGER, 2008-02-16)? With that commit, we changed things so that when we send the standard output to the $PAGER, we dup stderr to the $PAGER as well, because otherwise any output to stderr will be wiped out by whatever the pager does and the user will not notice the breakage. E.g. $ git log will just show reams of output, and you won't see any errors and warnings even if there were any encountered during the process. Unfortunately we did it unconditionally.
By the by, I noticed that the example shown in the commit message of 61b8050 has been broken since 4f3dcc2 (Fix 'git show' on signed tag of signed tag of commit, 2008-07-01). Here is a fix. builtin-log.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
diff --git c/builtin-log.c w/builtin-log.c
index 840daf9..99d1137 100644
--- c/builtin-log.c
+++ w/builtin-log.c@@ -340,7 +340,13 @@ int cmd_show(int argc, const char **argv, const char *prefix) t->tag, diff_get_color_opt(&rev.diffopt, DIFF_RESET)); ret = show_object(o->sha1, 1, &rev); - objects[i].item = parse_object(t->tagged->sha1); + if (ret) + break; + o = parse_object(t->tagged->sha1); + if (!o) + ret = error("Could not read object %s", + sha1_to_hex(t->tagged->sha1)); + objects[i].item = o; i--; break; }