transport-helper: warn when refspec is not used
authorFelipe Contreras <felipe.contreras@gmail.com>
Thu, 18 Apr 2013 04:14:31 +0000 (23:14 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 18 Apr 2013 06:27:03 +0000 (23:27 -0700)
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>
t/t5801-remote-helpers.sh
transport-helper.c
index f95003a97eae75c51afcb69036ce212a5817854d..f5722719410394b8590eaa9199952e74e0581339 100755 (executable)
@@ -100,14 +100,16 @@ test_expect_failure 'push new branch with old:new refspec' '
 
 test_expect_success 'cloning without refspec' '
        GIT_REMOTE_TESTGIT_REFSPEC="" \
-       git clone "testgit::${PWD}/server" local2 &&
+       git clone "testgit::${PWD}/server" local2 2>error &&
+       grep "This remote helper should implement refspec capability" error &&
        compare_refs local2 HEAD server HEAD
 '
 
 test_expect_success 'pulling without refspecs' '
        (cd local2 &&
        git reset --hard &&
-       GIT_REMOTE_TESTGIT_REFSPEC="" git pull) &&
+       GIT_REMOTE_TESTGIT_REFSPEC="" git pull 2>../error) &&
+       grep "This remote helper should implement refspec capability" error &&
        compare_refs local2 HEAD server HEAD
 '
 
index 98ef8f64109a7639bdd2187f1d6abb8742bab333..2452b3bb6d6bd6235376e4fbe87754cf0160006d 100644 (file)
@@ -215,6 +215,8 @@ static struct child_process *get_helper(struct transport *transport)
                        free((char *)refspecs[i]);
                }
                free(refspecs);
+       } else if (data->import || data->bidi_import || data->export) {
+               warning("This remote helper should implement refspec capability.");
        }
        strbuf_release(&buf);
        if (debug)