transport-helper: clarify pushing without refspecs
authorFelipe Contreras <felipe.contreras@gmail.com>
Thu, 18 Apr 2013 04:14:30 +0000 (23:14 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 18 Apr 2013 06:27:03 +0000 (23:27 -0700)
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>
Documentation/gitremote-helpers.txt
t/t5801-remote-helpers.sh
transport-helper.c
index ba7240c36377729bf60bcf0ec925e91e617c02d1..4d26e37d368601a6bc5e4f00ee00d0d9de8485dd 100644 (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/*`
index 0b376e0229fd5705043cf833fc314418f8fc2e4b..f95003a97eae75c51afcb69036ce212a5817854d 100755 (executable)
@@ -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' '
index 018513baa05fbf199b1c7d8ab5b1e1d41339aec3..98ef8f64109a7639bdd2187f1d6abb8742bab333 100644 (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);