[PATCH 4/4] Improve error message when a transport helper was not found
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Jan 10, 2010, 13:18 UTC
- Message-ID
- <201001101418.39321.j6t@kdbg.org>
- In-Reply-To
- <201001101404.22258.j6t@kdbg.org>
From: Ilari Liusvaara <ilari.liusvaara@elisanet.fi>
Perviously, the error message was:
git: 'remote-foo' is not a git-command. See 'git --help'.
By not treating the transport helper as a git command, a more suitable error is reported:
fatal: Unable to find remote helper for 'foo'
Signed-off-by: Ilari Liusvaara <ilari.liusvaara@elisanet.fi> Signed-off-by: Johannes Sixt <j6t@kdbg.org> --- While I agree mostly with the implementation of your patch, the justification was completely off, and I think it was because you did not notice that the parent process died from SIGPIPE. When patches 1-3/4 are applied, the parent does not die from SIGPIPE anymore, and the issue is now only minor (an unsuitable error message instead of no error message). Therefore, I rewrote the commit message to tone it down.
-- Hannes
transport-helper.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/transport-helper.c b/transport-helper.c index 6ece0d9..d1bc3af 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -102,6 +102,7 @@ static struct child_process *get_helper(struct transport *transport) int refspec_nr = 0; int refspec_alloc = 0; int duped; + int code; if (data->helper) return data->helper; @@ -111,13 +112,18 @@ static struct child_process *get_helper(struct transport *transport) helper->out = -1; helper->err = 0; helper->argv = xcalloc(4, sizeof(*helper->argv)); - strbuf_addf(&buf, "remote-%s", data->name); + strbuf_addf(&buf, "git-remote-%s", data->name); helper->argv[0] = strbuf_detach(&buf, NULL); helper->argv[1] = transport->remote->name; helper->argv[2] = remove_ext_force(transport->url); - helper->git_cmd = 1; - if (start_command(helper)) - die("Unable to run helper: git %s", helper->argv[0]); + helper->git_cmd = 0; + helper->silent_exec_failure = 1; + code = start_command(helper); + if (code < 0 && errno == ENOENT) + die("Unable to find remote helper for '%s'", data->name); + else + exit(code); + data->helper = helper; data->no_disconnect_req = 0;
-- 1.6.6.115.gd1ab3