From 67c9c782dae17822266783f8b5e15d73e7c91c65 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Mon, 20 May 2013 20:02:45 -0500 Subject: [PATCH 1/2] transport-helper: barf when user tries old:new Otherwise with certain remote helpers (the ones that support 'export'), the users will be pushing to the wrong branch: git push topic:master Will push the topic branch, as if the user typed: git push topic Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- transport-helper.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/transport-helper.c b/transport-helper.c index 522d79178e..a782a9bd71 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -813,9 +813,11 @@ static int push_refs_with_export(struct transport *transport, die("remote-helpers do not support ref deletion"); } - if (ref->peer_ref) + 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); - + } } if (get_exporter(transport, &exporter, &revlist_args)) From 21457f5719b894a5997d66ff098b375bc2404260 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Mon, 20 May 2013 20:32:04 -0500 Subject: [PATCH 2/2] transport-helper: check if the dry-run is supported Certain remote-helpers (the ones with 'export') would try to push regardless. Obviously this is not what the user wants. Also, add a check for the 'dry-run' option, so remote-helpers can implement it. Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- transport-helper.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/transport-helper.c b/transport-helper.c index a782a9bd71..f08eff0ab6 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -789,6 +789,11 @@ static int push_refs_with_export(struct transport *transport, struct string_list revlist_args = STRING_LIST_INIT_NODUP; struct strbuf buf = STRBUF_INIT; + 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); write_constant(helper->in, "export\n");