Later in version 2 of the pack protocol the selection of capabilities
happens at another step of the protocol, so move out the current
capability selection, so we can reuse it later more easily.

Signed-off-by: Stefan Beller <sbel...@google.com>
---
 fetch-pack.c | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/fetch-pack.c b/fetch-pack.c
index f96f6df..53f6384 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -796,21 +796,11 @@ static int cmp_ref_by_name(const void *a_, const void *b_)
        return strcmp(a->name, b->name);
 }
 
-static struct ref *do_fetch_pack(struct fetch_pack_args *args,
-                                int fd[2],
-                                const struct ref *orig_ref,
-                                struct ref **sought, int nr_sought,
-                                struct shallow_info *si,
-                                char **pack_lockfile)
+static void select_capabilities(struct fetch_pack_args *args)
 {
-       struct ref *ref = copy_ref_list(orig_ref);
-       unsigned char sha1[20];
        const char *agent_feature;
        int agent_len;
 
-       sort_ref_list(&ref, ref_compare_name);
-       qsort(sought, nr_sought, sizeof(*sought), cmp_ref_by_name);
-
        if ((args->depth > 0 || is_repository_shallow()) && 
!server_supports("shallow"))
                die("Server does not support shallow clients");
        if (server_supports("multi_ack_detailed")) {
@@ -867,6 +857,22 @@ static struct ref *do_fetch_pack(struct fetch_pack_args 
*args,
                        fprintf(stderr, "Server version is %.*s\n",
                                agent_len, agent_feature);
        }
+}
+
+static struct ref *do_fetch_pack(struct fetch_pack_args *args,
+                                int fd[2],
+                                const struct ref *orig_ref,
+                                struct ref **sought, int nr_sought,
+                                struct shallow_info *si,
+                                char **pack_lockfile)
+{
+       struct ref *ref = copy_ref_list(orig_ref);
+       unsigned char sha1[20];
+
+       sort_ref_list(&ref, ref_compare_name);
+       qsort(sought, nr_sought, sizeof(*sought), cmp_ref_by_name);
+
+       select_capabilities(args);
 
        if (everything_local(args, &ref, sought, nr_sought)) {
                packet_flush(fd[1]);
-- 
2.8.0.32.g71f8beb.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to