Skip to content

Commit 9c818d9

Browse files
SRabbelierdscho
authored andcommitted
remote-helper: check helper status after import/export
Signed-off-by: Johannes Schindelin <[email protected]> Signed-off-by: Sverre Rabbelier <[email protected]>
1 parent 4c9ae5f commit 9c818d9

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

builtin/clone.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1178,7 +1178,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
11781178
}
11791179

11801180
if (!is_local && !complete_refs_before_fetch)
1181-
transport_fetch_refs(transport, mapped_refs);
1181+
if (transport_fetch_refs(transport, mapped_refs))
1182+
die(_("could not fetch refs from %s"),
1183+
transport->url);
11821184

11831185
remote_head = find_ref_by_name(refs, "HEAD");
11841186
remote_head_points_at =

t/t5801-remote-helpers.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ test_expect_success 'push update refs failure' '
228228
echo "update fail" >>file &&
229229
git commit -a -m "update fail" &&
230230
git rev-parse --verify testgit/origin/heads/update >expect &&
231-
test_expect_code 1 env GIT_REMOTE_TESTGIT_FAILURE="non-fast forward" \
231+
test_must_fail env GIT_REMOTE_TESTGIT_FAILURE="non-fast forward" \
232232
git push origin update &&
233233
git rev-parse --verify testgit/origin/heads/update >actual &&
234234
test_cmp expect actual

transport-helper.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,19 @@ static int get_exporter(struct transport *transport,
468468
return start_command(fastexport);
469469
}
470470

471+
static void check_helper_status(struct helper_data *data)
472+
{
473+
int pid, status;
474+
475+
pid = waitpid(data->helper->pid, &status, WNOHANG);
476+
if (pid < 0)
477+
die("Could not retrieve status of remote helper '%s'",
478+
data->name);
479+
if (pid > 0 && WIFEXITED(status))
480+
die("Remote helper '%s' died with %d",
481+
data->name, WEXITSTATUS(status));
482+
}
483+
471484
static int fetch_with_import(struct transport *transport,
472485
int nr_heads, struct ref **to_fetch)
473486
{
@@ -504,6 +517,7 @@ static int fetch_with_import(struct transport *transport,
504517

505518
if (finish_command(&fastimport))
506519
die(_("error while running fast-import"));
520+
check_helper_status(data);
507521

508522
/*
509523
* The fast-import stream of a remote helper that advertises
@@ -996,6 +1010,7 @@ static int push_refs_with_export(struct transport *transport,
9961010

9971011
if (finish_command(&exporter))
9981012
die(_("error while running fast-export"));
1013+
check_helper_status(data);
9991014
if (push_update_refs_status(data, remote_refs, flags))
10001015
return 1;
10011016

0 commit comments

Comments
 (0)