checkout.h: wrap the arguments to unique_tracking_name()
[gitweb.git] / fetch-pack.c
index f93723fec41c772db0c0d6f5a8bb2239c9d370bd..a320ce9872b5e752aeb592a16cc9108ae87e9d71 100644 (file)
@@ -1174,6 +1174,13 @@ static int send_fetch_request(int fd_out, const struct fetch_pack_args *args,
                packet_buf_write(&req_buf, "command=fetch");
        if (server_supports_v2("agent", 0))
                packet_buf_write(&req_buf, "agent=%s", git_user_agent_sanitized());
+       if (args->server_options && args->server_options->nr &&
+           server_supports_v2("server-option", 1)) {
+               int i;
+               for (i = 0; i < args->server_options->nr; i++)
+                       packet_write_fmt(fd_out, "server-option=%s",
+                                        args->server_options->items[i].string);
+       }
 
        packet_buf_delim(&req_buf);
        if (args->use_thin_pack)
@@ -1191,14 +1198,29 @@ static int send_fetch_request(int fd_out, const struct fetch_pack_args *args,
        else if (is_repository_shallow() || args->deepen)
                die(_("Server does not support shallow requests"));
 
+       /* Add filter */
+       if (server_supports_feature("fetch", "filter", 0) &&
+           args->filter_options.choice) {
+               print_verbose(args, _("Server supports filter"));
+               packet_buf_write(&req_buf, "filter %s",
+                                args->filter_options.filter_spec);
+       } else if (args->filter_options.choice) {
+               warning("filtering not recognized by server, ignoring");
+       }
+
        /* add wants */
        add_wants(wants, &req_buf);
 
-       /* Add all of the common commits we've found in previous rounds */
-       add_common(&req_buf, common);
+       if (args->no_dependents) {
+               packet_buf_write(&req_buf, "done");
+               ret = 1;
+       } else {
+               /* Add all of the common commits we've found in previous rounds */
+               add_common(&req_buf, common);
 
-       /* Add initial haves */
-       ret = add_haves(&req_buf, haves_to_send, in_vain);
+               /* Add initial haves */
+               ret = add_haves(&req_buf, haves_to_send, in_vain);
+       }
 
        /* Send request */
        packet_buf_flush(&req_buf);