Previously transport-helper exec failure error reporting was pretty much useless as it didn't report errors from execve, only from pipe and fork. Now that run-command passes errno from exec, use the improved support to actually print useful errors if execution fails. Signed-off-by: Ilari Liusvaara <ilari.liusvaara@xxxxxxxxxxx> --- transport-helper.c | 27 +++++++++++++++++++++++---- 1 files changed, 23 insertions(+), 4 deletions(-) diff --git a/transport-helper.c b/transport-helper.c index 5147296..72be965 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,31 @@ 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->argv[2] = transport->url; + helper->git_cmd = 0; + helper->silent_exec_failure = 1; + helper->extended_error_code = 1; + /* + * Print errors even if start_command should have printed them in + * order to get proper fatal-level error message and include + * errnos to make inevitable incomplete problem reports more useful + * (those have nasty tendency of including only the last line that + * looks like error). + */ + code = start_command(helper); + if (code == -2) + die("Unable to find remote helper for '%s'", + data->name); + else if(code == -1) + die_errno("Error running helper for '%s'", data->name); + else if(code != 0) + /* Shouldn't happen. */ + die_errno("code %i running helper for '%s'", code, data->name); + data->helper = helper; data->no_disconnect_req = 0; -- 1.6.6.3.gaa2e1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html