Browse Source

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>
maint
Felipe Contreras 12 years ago committed by Junio C Hamano
parent
commit
21610d820b
  1. 4
      Documentation/gitremote-helpers.txt
  2. 6
      t/t5801-remote-helpers.sh
  3. 5
      transport-helper.c

4
Documentation/gitremote-helpers.txt

@ -162,8 +162,8 @@ Miscellaneous capabilities @@ -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/*`

6
t/t5801-remote-helpers.sh

@ -111,13 +111,13 @@ test_expect_success 'pulling without refspecs' ' @@ -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' '

5
transport-helper.c

@ -785,6 +785,9 @@ static int push_refs_with_export(struct transport *transport, @@ -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, @@ -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);

Loading…
Cancel
Save