summaryrefslogtreecommitdiff
path: root/transport-helper.c
diff options
context:
space:
mode:
Diffstat (limited to 'transport-helper.c')
-rw-r--r--transport-helper.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/transport-helper.c b/transport-helper.c
index 7d75d64744..3775d63aff 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -28,6 +28,7 @@ struct helper_data {
signed_tags : 1,
check_connectivity : 1,
no_disconnect_req : 1,
+ refspec : 1,
no_private_update : 1;
char *export_marks;
char *import_marks;
@@ -114,8 +115,15 @@ static struct child_process *get_helper(struct transport *transport, const struc
int code;
int i;
- if (data->helper)
+ if (data->helper) {
+ if (!data->refspec && req_refspec_nr) {
+ for (i = 0; i < req_refspec_nr; i++)
+ set_helper_option(transport, "refspec",
+ req_refspecs[i].src);
+ data->refspec = 1;
+ }
return data->helper;
+ }
helper = xmalloc(sizeof(*helper));
child_process_init(helper);
@@ -220,6 +228,8 @@ static struct child_process *get_helper(struct transport *transport, const struc
for (i = 0; i < req_refspec_nr; i++)
set_helper_option(transport, "refspec", req_refspecs[i].src);
+ if (req_refspec_nr)
+ data->refspec = 1;
standard_options(transport);
return data->helper;
}