transport-helper: clarify pushing without refspecs

This has never worked, since it's inception the code simply skips all
the refs, essentially telling fast-export to do nothing.

Let's at least tell the user what's going on.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Felipe Contreras 2013-04-17 23:14:30 -05:00 committed by Junio C Hamano
parent bb0a5cc9dc
commit 21610d820b
3 changed files with 8 additions and 7 deletions

View File

@ -162,8 +162,8 @@ Miscellaneous capabilities
For remote helpers that implement 'import' or 'export', this capability For remote helpers that implement 'import' or 'export', this capability
allows the refs to be constrained to a private namespace, instead of allows the refs to be constrained to a private namespace, instead of
writing to refs/heads or refs/remotes directly. writing to refs/heads or refs/remotes directly.
It is recommended that all importers providing the 'import' or 'export' It is recommended that all importers providing the 'import'
capabilities use this. capability use this. It's mandatory for 'export'.
+ +
A helper advertising the capability A helper advertising the capability
`refspec refs/heads/*:refs/svn/origin/branches/*` `refspec refs/heads/*:refs/svn/origin/branches/*`

View File

@ -111,13 +111,13 @@ test_expect_success 'pulling without refspecs' '
compare_refs local2 HEAD server HEAD compare_refs local2 HEAD server HEAD
' '
test_expect_failure 'pushing without refspecs' ' test_expect_success 'pushing without refspecs' '
test_when_finished "(cd local2 && git reset --hard origin)" && test_when_finished "(cd local2 && git reset --hard origin)" &&
(cd local2 && (cd local2 &&
echo content >>file && echo content >>file &&
git commit -a -m ten && git commit -a -m ten &&
GIT_REMOTE_TESTGIT_REFSPEC="" git push) && GIT_REMOTE_TESTGIT_REFSPEC="" test_must_fail git push 2>../error) &&
compare_refs local2 HEAD server HEAD grep "remote-helper doesn.t support push; refspec needed" error
' '
test_expect_success 'pulling without marks' ' test_expect_success 'pulling without marks' '

View File

@ -785,6 +785,9 @@ static int push_refs_with_export(struct transport *transport,
struct string_list revlist_args = STRING_LIST_INIT_NODUP; struct string_list revlist_args = STRING_LIST_INIT_NODUP;
struct strbuf buf = STRBUF_INIT; struct strbuf buf = STRBUF_INIT;
if (!data->refspecs)
die("remote-helper doesn't support push; refspec needed");
helper = get_helper(transport); helper = get_helper(transport);
write_constant(helper->in, "export\n"); write_constant(helper->in, "export\n");
@ -795,8 +798,6 @@ static int push_refs_with_export(struct transport *transport,
char *private; char *private;
unsigned char sha1[20]; unsigned char sha1[20];
if (!data->refspecs)
continue;
private = apply_refspecs(data->refspecs, data->refspec_nr, ref->name); private = apply_refspecs(data->refspecs, data->refspec_nr, ref->name);
if (private && !get_sha1(private, sha1)) { if (private && !get_sha1(private, sha1)) {
strbuf_addf(&buf, "^%s", private); strbuf_addf(&buf, "^%s", private);