transport-helper: warn when refspec is not used

For the modes that need it. In the future we should probably error out, instead of providing half-assed support. The reason we want to do this is because if it's not present, the remote helper might be updating refs/heads/*, or refs/remotes/origin/*, directly, and in the process fetch will get confused trying to update refs that are already updated, or older than what they should be. We shouldn't be messing with the rest of git. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Felipe Contreras committed Apr 17, 2013 at 23:14 UTC a93b4a09acfed0e2a006770d0196c74968e65c25
2 files changed +6 -2
t/t5801-remote-helpers.sh
+4 -2
@@ -100,14 +100,16 @@ test_expect_failure 'push new branch with old:new refspec' '
100
101 test_expect_success 'cloning without refspec' '
102 GIT_REMOTE_TESTGIT_REFSPEC="" \
103 - git clone "testgit::${PWD}/server" local2 &&
103 + git clone "testgit::${PWD}/server" local2 2>error &&
104 + grep "This remote helper should implement refspec capability" error &&
105 compare_refs local2 HEAD server HEAD
106 '
107
108 test_expect_success 'pulling without refspecs' '
109 (cd local2 &&
110 git reset --hard &&
110 - GIT_REMOTE_TESTGIT_REFSPEC="" git pull) &&
111 + GIT_REMOTE_TESTGIT_REFSPEC="" git pull 2>../error) &&
112 + grep "This remote helper should implement refspec capability" error &&
113 compare_refs local2 HEAD server HEAD
114 '
115
transport-helper.c
+2
@@ -215,6 +215,8 @@ static struct child_process *get_helper(struct transport *transport)
215 free((char *)refspecs[i]);
216 }
217 free(refspecs);
218 + } else if (data->import || data->bidi_import || data->export) {
219 + warning("This remote helper should implement refspec capability.");
220 }
221 strbuf_release(&buf);
222 if (debug)