Merge branch 'fc/transport-helper-no-refspec'
With "export" remote-helper protocol, (1) a push that tries to update a remote ref whose name is different from the pushing side does not work yet, and (2) the helper may not know how to do --dry-run Detect such problematic cases and disable them for now. * fc/transport-helper-no-refspec: transport-helper: check if the dry-run is supported transport-helper: barf when user tries old:new
This commit is contained in:
commit
99d9ec0906
@ -809,6 +809,11 @@ static int push_refs_with_export(struct transport *transport,
|
|||||||
if (!data->refspecs)
|
if (!data->refspecs)
|
||||||
die("remote-helper doesn't support push; refspec needed");
|
die("remote-helper doesn't support push; refspec needed");
|
||||||
|
|
||||||
|
if (flags & TRANSPORT_PUSH_DRY_RUN) {
|
||||||
|
if (set_helper_option(transport, "dry-run", "true") != 0)
|
||||||
|
die("helper %s does not support dry-run", data->name);
|
||||||
|
}
|
||||||
|
|
||||||
helper = get_helper(transport);
|
helper = get_helper(transport);
|
||||||
|
|
||||||
write_constant(helper->in, "export\n");
|
write_constant(helper->in, "export\n");
|
||||||
@ -830,8 +835,14 @@ static int push_refs_with_export(struct transport *transport,
|
|||||||
}
|
}
|
||||||
free(private);
|
free(private);
|
||||||
|
|
||||||
if (ref->peer_ref)
|
if (ref->deletion)
|
||||||
|
die("remote-helpers do not support ref deletion");
|
||||||
|
|
||||||
|
if (ref->peer_ref) {
|
||||||
|
if (strcmp(ref->peer_ref->name, ref->name))
|
||||||
|
die("remote-helpers do not support old:new syntax");
|
||||||
string_list_append(&revlist_args, ref->peer_ref->name);
|
string_list_append(&revlist_args, ref->peer_ref->name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (get_exporter(transport, &exporter, &revlist_args))
|
if (get_exporter(transport, &exporter, &revlist_args))
|
||||||
|
Loading…
Reference in New Issue
Block a user