@@ -293,6 +293,29 @@ static void mark_tips(struct fetch_negotiator *negotiator,
293293 return ;
294294}
295295
296+ static void send_filter (struct fetch_pack_args * args ,
297+ struct strbuf * req_buf ,
298+ int server_supports_filter )
299+ {
300+ if (args -> filter_options .choice ) {
301+ const char * spec =
302+ expand_list_objects_filter_spec (& args -> filter_options );
303+ if (server_supports_filter ) {
304+ print_verbose (args , _ ("Server supports filter" ));
305+ packet_buf_write (req_buf , "filter %s" , spec );
306+ trace2_data_string ("fetch" , the_repository ,
307+ "filter/effective" , spec );
308+ } else {
309+ warning ("filtering not recognized by server, ignoring" );
310+ trace2_data_string ("fetch" , the_repository ,
311+ "filter/unsupported" , spec );
312+ }
313+ } else {
314+ trace2_data_string ("fetch" , the_repository ,
315+ "filter/none" , "" );
316+ }
317+ }
318+
296319static int find_common (struct fetch_negotiator * negotiator ,
297320 struct fetch_pack_args * args ,
298321 int fd [2 ], struct object_id * result_oid ,
@@ -390,11 +413,7 @@ static int find_common(struct fetch_negotiator *negotiator,
390413 packet_buf_write (& req_buf , "deepen-not %s" , s -> string );
391414 }
392415 }
393- if (server_supports_filtering && args -> filter_options .choice ) {
394- const char * spec =
395- expand_list_objects_filter_spec (& args -> filter_options );
396- packet_buf_write (& req_buf , "filter %s" , spec );
397- }
416+ send_filter (args , & req_buf , server_supports_filtering );
398417 packet_buf_flush (& req_buf );
399418 state_len = req_buf .len ;
400419
@@ -1331,15 +1350,8 @@ static int send_fetch_request(struct fetch_negotiator *negotiator, int fd_out,
13311350 die (_ ("Server does not support shallow requests" ));
13321351
13331352 /* Add filter */
1334- if (server_supports_feature ("fetch" , "filter" , 0 ) &&
1335- args -> filter_options .choice ) {
1336- const char * spec =
1337- expand_list_objects_filter_spec (& args -> filter_options );
1338- print_verbose (args , _ ("Server supports filter" ));
1339- packet_buf_write (& req_buf , "filter %s" , spec );
1340- } else if (args -> filter_options .choice ) {
1341- warning ("filtering not recognized by server, ignoring" );
1342- }
1353+ send_filter (args , & req_buf ,
1354+ server_supports_feature ("fetch" , "filter" , 0 ));
13431355
13441356 if (server_supports_feature ("fetch" , "packfile-uris" , 0 )) {
13451357 int i ;
0 commit comments