diff options
author | Junio C Hamano <gitster@pobox.com> | 2022-08-06 01:52:14 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-08-06 01:52:14 +0300 |
commit | 3a4d71f52f3a45d14d963c5700bd634e28d58687 (patch) | |
tree | 5ee00a852045ec947c1c3bcb0142c316f2122a80 /fetch-pack.c | |
parent | dcdcc375a40cf0b1b01af89698f144f7e9568d55 (diff) | |
parent | 1007557a4e6faf93339f5477b69bd42979c20a30 (diff) |
Merge branch 'jt/fetch-pack-trace2-filter-spec'
"git fetch" client logs the partial clone filter used in the trace2
output.
* jt/fetch-pack-trace2-filter-spec:
fetch-pack: write effective filter to trace2
Diffstat (limited to 'fetch-pack.c')
-rw-r--r-- | fetch-pack.c | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/fetch-pack.c b/fetch-pack.c index e4503774b5..d35be4177b 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -293,6 +293,29 @@ static void mark_tips(struct fetch_negotiator *negotiator, return; } +static void send_filter(struct fetch_pack_args *args, + struct strbuf *req_buf, + int server_supports_filter) +{ + if (args->filter_options.choice) { + const char *spec = + expand_list_objects_filter_spec(&args->filter_options); + if (server_supports_filter) { + print_verbose(args, _("Server supports filter")); + packet_buf_write(req_buf, "filter %s", spec); + trace2_data_string("fetch", the_repository, + "filter/effective", spec); + } else { + warning("filtering not recognized by server, ignoring"); + trace2_data_string("fetch", the_repository, + "filter/unsupported", spec); + } + } else { + trace2_data_string("fetch", the_repository, + "filter/none", ""); + } +} + static int find_common(struct fetch_negotiator *negotiator, struct fetch_pack_args *args, int fd[2], struct object_id *result_oid, @@ -390,11 +413,7 @@ static int find_common(struct fetch_negotiator *negotiator, packet_buf_write(&req_buf, "deepen-not %s", s->string); } } - if (server_supports_filtering && args->filter_options.choice) { - const char *spec = - expand_list_objects_filter_spec(&args->filter_options); - packet_buf_write(&req_buf, "filter %s", spec); - } + send_filter(args, &req_buf, server_supports_filtering); packet_buf_flush(&req_buf); state_len = req_buf.len; @@ -1331,15 +1350,8 @@ static int send_fetch_request(struct fetch_negotiator *negotiator, int fd_out, die(_("Server does not support shallow requests")); /* Add filter */ - if (server_supports_feature("fetch", "filter", 0) && - args->filter_options.choice) { - const char *spec = - expand_list_objects_filter_spec(&args->filter_options); - print_verbose(args, _("Server supports filter")); - packet_buf_write(&req_buf, "filter %s", spec); - } else if (args->filter_options.choice) { - warning("filtering not recognized by server, ignoring"); - } + send_filter(args, &req_buf, + server_supports_feature("fetch", "filter", 0)); if (server_supports_feature("fetch", "packfile-uris", 0)) { int i; |