Re: fatal output from git-show really wants a terminal
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 15, 2008, 08:23 UTC
- Message-ID
- <7vwse1yhgl.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <7v3agpzwet.fsf@gitster.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
Show 12 quoted lines
>> 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; }