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
allows the refs to be constrained to a private namespace, instead of
writing to refs/heads or refs/remotes directly.
It is recommended that all importers providing the 'import' or 'export'
capabilities use this.
It is recommended that all importers providing the 'import'
capability use this. It's mandatory for 'export'.
+
A helper advertising the capability
`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
'
test_expect_failure 'pushing without refspecs' '
test_expect_success 'pushing without refspecs' '
test_when_finished "(cd local2 && git reset --hard origin)" &&
(cd local2 &&
echo content >>file &&
git commit -a -m ten &&
GIT_REMOTE_TESTGIT_REFSPEC="" git push) &&
compare_refs local2 HEAD server HEAD
GIT_REMOTE_TESTGIT_REFSPEC="" test_must_fail git push 2>../error) &&
grep "remote-helper doesn.t support push; refspec needed" error
'
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 strbuf buf = STRBUF_INIT;
if (!data->refspecs)
die("remote-helper doesn't support push; refspec needed");
helper = get_helper(transport);
write_constant(helper->in, "export\n");
@ -795,8 +798,6 @@ static int push_refs_with_export(struct transport *transport,
char *private;
unsigned char sha1[20];
if (!data->refspecs)
continue;
private = apply_refspecs(data->refspecs, data->refspec_nr, ref->name);
if (private && !get_sha1(private, sha1)) {
strbuf_addf(&buf, "^%s", private);