]> git.ipfire.org Git - thirdparty/git.git/commitdiff
upload-pack: use 'struct upload_pack_data' in upload_pack()
authorChristian Couder <christian.couder@gmail.com>
Fri, 15 May 2020 10:04:45 +0000 (12:04 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 18 May 2020 19:58:01 +0000 (12:58 -0700)
As we cleanup 'upload-pack.c' by using 'struct upload_pack_data'
more thoroughly, let's use 'struct upload_pack_data' in
upload_pack().

This will make it possible in followup commits to remove a lot
of static variables and local variables that have the same name
and purpose as fields in 'struct upload_pack_data'. This will
also make upload_pack() work in a more similar way as
upload_pack_v2().

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
upload-pack.c

index 9aeb3477c9d1a8a529410f8a7fdd06ed6e9ce154..cb336c5713958e5b0781386e38a3ba3809251ad7 100644 (file)
@@ -1144,18 +1144,17 @@ static int upload_pack_config(const char *var, const char *value, void *unused)
 void upload_pack(struct upload_pack_options *options)
 {
        struct string_list symref = STRING_LIST_INIT_DUP;
-       struct object_array want_obj = OBJECT_ARRAY_INIT;
        struct packet_reader reader;
-       struct list_objects_filter_options filter_options;
+       struct upload_pack_data data;
 
        stateless_rpc = options->stateless_rpc;
        timeout = options->timeout;
        daemon_mode = options->daemon_mode;
 
-       memset(&filter_options, 0, sizeof(filter_options));
-
        git_config(upload_pack_config, NULL);
 
+       upload_pack_data_init(&data);
+
        head_ref_namespaced(find_symref, &symref);
 
        if (options->advertise_refs || !stateless_rpc) {
@@ -1169,21 +1168,24 @@ void upload_pack(struct upload_pack_options *options)
                for_each_namespaced_ref(check_ref, NULL);
        }
        string_list_clear(&symref, 1);
-       if (options->advertise_refs)
-               return;
 
-       packet_reader_init(&reader, 0, NULL, 0,
-                          PACKET_READ_CHOMP_NEWLINE |
-                          PACKET_READ_DIE_ON_ERR_PACKET);
+       if (!options->advertise_refs) {
+               packet_reader_init(&reader, 0, NULL, 0,
+                                  PACKET_READ_CHOMP_NEWLINE |
+                                  PACKET_READ_DIE_ON_ERR_PACKET);
 
-       receive_needs(&reader, &want_obj, &filter_options);
-       if (want_obj.nr) {
-               struct object_array have_obj = OBJECT_ARRAY_INIT;
-               get_common_commits(&reader, &have_obj, &want_obj);
-               create_pack_file(&have_obj, &want_obj, &filter_options);
+               receive_needs(&reader, &data.want_obj, &data.filter_options);
+               if (data.want_obj.nr) {
+                       get_common_commits(&reader,
+                                          &data.have_obj,
+                                          &data.want_obj);
+                       create_pack_file(&data.have_obj,
+                                        &data.want_obj,
+                                        &data.filter_options);
+               }
        }
 
-       list_objects_filter_release(&filter_options);
+       upload_pack_data_clear(&data);
 }
 
 static int parse_want(struct packet_writer *writer, const char *line,