@@ -450,6 +450,8 @@ struct gh__request_params {
450450 struct progress * progress ;
451451
452452 struct strbuf e2eid ;
453+
454+ struct string_list * result_list ; /* we do not own this */
453455};
454456
455457#define GH__REQUEST_PARAMS_INIT { \
@@ -478,6 +480,7 @@ struct gh__request_params {
478480 .progress_msg = STRBUF_INIT, \
479481 .progress = NULL, \
480482 .e2eid = STRBUF_INIT, \
483+ .result_list = NULL, \
481484 }
482485
483486static void gh__request_params__release (struct gh__request_params * params )
@@ -510,6 +513,8 @@ static void gh__request_params__release(struct gh__request_params *params)
510513 params -> progress = NULL ;
511514
512515 strbuf_release (& params -> e2eid );
516+
517+ params -> result_list = NULL ; /* we do not own this */
513518}
514519
515520/*
@@ -1870,6 +1875,16 @@ static void install_packfile(struct gh__request_params *params,
18701875 goto cleanup ;
18711876 }
18721877
1878+
1879+ if (params -> result_list ) {
1880+ struct strbuf result_msg = STRBUF_INIT ;
1881+
1882+ strbuf_addf (& result_msg , "packfile %s" ,
1883+ params -> final_packfile_filename .buf );
1884+ string_list_append (params -> result_list , result_msg .buf );
1885+ strbuf_release (& result_msg );
1886+ }
1887+
18731888cleanup :
18741889 child_process_clear (& ip );
18751890}
@@ -1926,8 +1941,19 @@ static void install_loose(struct gh__request_params *params,
19261941 "could not install loose object '%s'" ,
19271942 params -> loose_path .buf );
19281943 status -> ec = GH__ERROR_CODE__COULD_NOT_INSTALL_LOOSE ;
1944+ goto cleanup ;
1945+ }
1946+
1947+ if (params -> result_list ) {
1948+ struct strbuf result_msg = STRBUF_INIT ;
1949+
1950+ strbuf_addf (& result_msg , "loose %s" ,
1951+ oid_to_hex (& params -> loose_oid ));
1952+ string_list_append (params -> result_list , result_msg .buf );
1953+ strbuf_release (& result_msg );
19291954 }
19301955
1956+ cleanup :
19311957 strbuf_release (& tmp_path );
19321958}
19331959
@@ -2583,7 +2609,7 @@ static void setup_gvfs_objects_progress(struct gh__request_params *params,
25832609 if (!gh__cmd_opts .show_progress )
25842610 return ;
25852611
2586- if (params -> b_is_post && params -> object_count > 1 ) {
2612+ if (params -> b_is_post ) {
25872613 strbuf_addf (& params -> progress_base_phase3_msg ,
25882614 "Receiving packfile %ld/%ld with %ld objects" ,
25892615 num , den , params -> object_count );
@@ -2615,6 +2641,8 @@ static void do__http_get__gvfs_object(struct gh__response_status *status,
26152641
26162642 params .object_count = 1 ;
26172643
2644+ params .result_list = result_list ;
2645+
26182646 params .headers = http_copy_default_headers ();
26192647 params .headers = curl_slist_append (params .headers ,
26202648 "X-TFS-FedAuthRedirect: Suppress" );
@@ -2627,16 +2655,6 @@ static void do__http_get__gvfs_object(struct gh__response_status *status,
26272655
26282656 do_req__with_fallback (component_url .buf , & params , status );
26292657
2630- if (status -> ec == GH__ERROR_CODE__OK ) {
2631- struct strbuf msg = STRBUF_INIT ;
2632-
2633- strbuf_addf (& msg , "loose %s" ,
2634- oid_to_hex (& params .loose_oid ));
2635-
2636- string_list_append (result_list , msg .buf );
2637- strbuf_release (& msg );
2638- }
2639-
26402658 gh__request_params__release (& params );
26412659 strbuf_release (& component_url );
26422660}
@@ -2648,7 +2666,7 @@ static void do__http_get__gvfs_object(struct gh__response_status *status,
26482666 * consumed (along with the filename of the resulting packfile).
26492667 *
26502668 * However, if we only have 1 oid (remaining) in the OIDSET, the
2651- * server will respond to our POST with a loose object rather than
2669+ * server *MAY* respond to our POST with a loose object rather than
26522670 * a packfile with 1 object.
26532671 *
26542672 * Append a message to the result_list describing the result.
@@ -2679,6 +2697,8 @@ static void do__http_post__gvfs_objects(struct gh__response_status *status,
26792697
26802698 params .post_payload = & jw_req .json ;
26812699
2700+ params .result_list = result_list ;
2701+
26822702 params .headers = http_copy_default_headers ();
26832703 params .headers = curl_slist_append (params .headers ,
26842704 "X-TFS-FedAuthRedirect: Suppress" );
@@ -2706,20 +2726,6 @@ static void do__http_post__gvfs_objects(struct gh__response_status *status,
27062726
27072727 do_req__with_fallback ("gvfs/objects" , & params , status );
27082728
2709- if (status -> ec == GH__ERROR_CODE__OK ) {
2710- struct strbuf msg = STRBUF_INIT ;
2711-
2712- if (params .object_count > 1 )
2713- strbuf_addf (& msg , "packfile %s" ,
2714- params .final_packfile_filename .buf );
2715- else
2716- strbuf_addf (& msg , "loose %s" ,
2717- oid_to_hex (& params .loose_oid ));
2718-
2719- string_list_append (result_list , msg .buf );
2720- strbuf_release (& msg );
2721- }
2722-
27232729 gh__request_params__release (& params );
27242730 jw_release (& jw_req );
27252731}
0 commit comments