t4042: abstract away SHA-1-specific constants
[gitweb.git] / connect.c
index a57a060dc456771ac3f59997118f35933a324eb3..b34dc80451fb375b112c1338a0aa3326a0a168ad 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -48,7 +48,7 @@ int check_ref_type(const struct ref *ref, int flags)
        return check_ref(ref->name, flags);
 }
 
-static void die_initial_contact(int unexpected)
+static NORETURN void die_initial_contact(int unexpected)
 {
        /*
         * A hang-up after seeing some response from the other end
@@ -1218,6 +1218,14 @@ struct child_process *git_connect(int fd[2], const char *url,
        enum protocol protocol;
        enum protocol_version version = get_protocol_version_config();
 
+       /*
+        * NEEDSWORK: If we are trying to use protocol v2 and we are planning
+        * to perform a push, then fallback to v0 since the client doesn't know
+        * how to push yet using v2.
+        */
+       if (version == protocol_v2 && !strcmp("git-receive-pack", prog))
+               version = protocol_v0;
+
        /* Without this we cannot rely on waitpid() to tell
         * what happened to our children.
         */