transport-helper: be quiet on read errors from helpers
authorJeff King <peff@peff.net>
Fri, 21 Jun 2013 07:05:39 +0000 (03:05 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Jun 2013 16:03:53 +0000 (09:03 -0700)
Prior to commit 81d340d4, we did not print any error message
if a remote transport helper died unexpectedly. If a helper
did not print any error message (e.g., because it crashed),
the user could be left confused. That commit tried to
rectify the situation by printing a note that the helper
exited unexpectedly.

However, this makes a much more common case worse: when a
helper does die with a useful message, we print the extra
"Reading from 'git-remote-foo failed" message. This can also
end up confusing users, as they may not even know what
remote helpers are (e.g., the fact that http support comes
through git-remote-https is purely an implementation detail
that most users do not know or care about).

Since we do not have a good way of knowing whether the
helper printed a useful error, and since the common failure
mode is for it to do so, let's default to remaining quiet.
Debuggers can dig further by setting GIT_TRANSPORT_HELPER_DEBUG.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5801-remote-helpers.sh
transport-helper.c
index 4899af3f7abfb567017e0d64c7961c22beb5b749..8c4c5396a8447fc39d6f0c697af761631b08b3f7 100755 (executable)
@@ -210,9 +210,7 @@ test_expect_success 'proper failure checks for pushing' '
        (GIT_REMOTE_TESTGIT_FAILURE=1 &&
        export GIT_REMOTE_TESTGIT_FAILURE &&
        cd local &&
-       test_must_fail git push --all 2> error &&
-       cat error &&
-       grep -q "Reading from helper .git-remote-testgit. failed" error
+       test_must_fail git push --all
        )
 '
 
index 06c08a1786391e7a04fa566af0cf42c659ed8aa9..db9bd182984f88f512cf7983ea734de4c415d21c 100644 (file)
@@ -56,7 +56,7 @@ static int recvline_fh(FILE *helper, struct strbuf *buffer, const char *name)
        if (strbuf_getline(buffer, helper, '\n') == EOF) {
                if (debug)
                        fprintf(stderr, "Debug: Remote helper quit.\n");
-               die("Reading from helper 'git-remote-%s' failed", name);
+               exit(128);
        }
 
        if (debug)