diff --git a/builtin/clone.c b/builtin/clone.c index 9b3c04d914..e56b0c096d 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -943,7 +943,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix) } if (!is_local && !complete_refs_before_fetch) - transport_fetch_refs(transport, mapped_refs); + if (transport_fetch_refs(transport, mapped_refs)) + die(_("could not fetch refs from %s"), + transport->url); remote_head = find_ref_by_name(refs, "HEAD"); remote_head_points_at = diff --git a/transport-helper.c b/transport-helper.c index 333d8533bc..f742410262 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -452,6 +452,19 @@ static int get_exporter(struct transport *transport, return start_command(fastexport); } +static void check_helper_status(struct helper_data *data) +{ + int pid, status; + + pid = waitpid(data->helper->pid, &status, WNOHANG); + if (pid < 0) + die("Could not retrieve status of remote helper '%s'", + data->name); + if (pid > 0 && WIFEXITED(status)) + die("Remote helper '%s' died with %d", + data->name, WEXITSTATUS(status)); +} + static int fetch_with_import(struct transport *transport, int nr_heads, struct ref **to_fetch) { @@ -488,6 +501,7 @@ static int fetch_with_import(struct transport *transport, if (finish_command(&fastimport)) die("Error while running fast-import"); argv_array_free_detached(fastimport.argv); + check_helper_status(data); /* * The fast-import stream of a remote helper that advertises @@ -913,6 +927,7 @@ static int push_refs_with_export(struct transport *transport, if (finish_command(&exporter)) die("Error while running fast-export"); + check_helper_status(data); if (push_update_refs_status(data, remote_refs, flags)) return 1;