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)