@@ -352,9 +352,9 @@ static int get_ref_states(const struct ref *remote_refs, struct ref_states *stat
352352 free_refs (stale_refs );
353353 free_refs (fetch_map );
354354
355- sort_string_list (& states -> new );
356- sort_string_list (& states -> tracked );
357- sort_string_list (& states -> stale );
355+ string_list_sort (& states -> new );
356+ string_list_sort (& states -> tracked );
357+ string_list_sort (& states -> stale );
358358
359359 return 0 ;
360360}
@@ -750,16 +750,11 @@ static int mv(int argc, const char **argv)
750750static int remove_branches (struct string_list * branches )
751751{
752752 struct strbuf err = STRBUF_INIT ;
753- const char * * branch_names ;
754753 int i , result = 0 ;
755754
756- branch_names = xmalloc (branches -> nr * sizeof (* branch_names ));
757- for (i = 0 ; i < branches -> nr ; i ++ )
758- branch_names [i ] = branches -> items [i ].string ;
759- if (repack_without_refs (branch_names , branches -> nr , & err ))
755+ if (repack_without_refs (branches , & err ))
760756 result |= error ("%s" , err .buf );
761757 strbuf_release (& err );
762- free (branch_names );
763758
764759 for (i = 0 ; i < branches -> nr ; i ++ ) {
765760 struct string_list_item * item = branches -> items + i ;
@@ -914,7 +909,7 @@ static int get_remote_ref_states(const char *name,
914909 get_push_ref_states (remote_refs , states );
915910 } else {
916911 for_each_ref (append_ref_to_tracked_list , states );
917- sort_string_list (& states -> tracked );
912+ string_list_sort (& states -> tracked );
918913 get_push_ref_states_noquery (states );
919914 }
920915
@@ -1133,7 +1128,7 @@ static int show_all(void)
11331128 if (!result ) {
11341129 int i ;
11351130
1136- sort_string_list (& list );
1131+ string_list_sort (& list );
11371132 for (i = 0 ; i < list .nr ; i ++ ) {
11381133 struct string_list_item * item = list .items + i ;
11391134 if (verbose )
@@ -1314,41 +1309,41 @@ static int set_head(int argc, const char **argv)
13141309
13151310static int prune_remote (const char * remote , int dry_run )
13161311{
1317- int result = 0 , i ;
1312+ int result = 0 ;
13181313 struct ref_states states ;
1319- struct string_list delete_refs_list = STRING_LIST_INIT_NODUP ;
1320- const char * * delete_refs ;
1314+ struct string_list refs_to_prune = STRING_LIST_INIT_NODUP ;
1315+ struct string_list_item * item ;
13211316 const char * dangling_msg = dry_run
13221317 ? _ (" %s will become dangling!" )
13231318 : _ (" %s has become dangling!" );
13241319
13251320 memset (& states , 0 , sizeof (states ));
13261321 get_remote_ref_states (remote , & states , GET_REF_STATES );
13271322
1328- if (states .stale .nr ) {
1329- printf_ln (_ ("Pruning %s" ), remote );
1330- printf_ln (_ ("URL: %s" ),
1331- states .remote -> url_nr
1332- ? states .remote -> url [0 ]
1333- : _ ("(no URL)" ));
1334-
1335- delete_refs = xmalloc (states .stale .nr * sizeof (* delete_refs ));
1336- for (i = 0 ; i < states .stale .nr ; i ++ )
1337- delete_refs [i ] = states .stale .items [i ].util ;
1338- if (!dry_run ) {
1339- struct strbuf err = STRBUF_INIT ;
1340- if (repack_without_refs (delete_refs , states .stale .nr ,
1341- & err ))
1342- result |= error ("%s" , err .buf );
1343- strbuf_release (& err );
1344- }
1345- free (delete_refs );
1323+ if (!states .stale .nr ) {
1324+ free_remote_ref_states (& states );
1325+ return 0 ;
13461326 }
13471327
1348- for (i = 0 ; i < states .stale .nr ; i ++ ) {
1349- const char * refname = states .stale .items [i ].util ;
1328+ printf_ln (_ ("Pruning %s" ), remote );
1329+ printf_ln (_ ("URL: %s" ),
1330+ states .remote -> url_nr
1331+ ? states .remote -> url [0 ]
1332+ : _ ("(no URL)" ));
1333+
1334+ for_each_string_list_item (item , & states .stale )
1335+ string_list_append (& refs_to_prune , item -> util );
1336+ string_list_sort (& refs_to_prune );
1337+
1338+ if (!dry_run ) {
1339+ struct strbuf err = STRBUF_INIT ;
1340+ if (repack_without_refs (& refs_to_prune , & err ))
1341+ result |= error ("%s" , err .buf );
1342+ strbuf_release (& err );
1343+ }
13501344
1351- string_list_insert (& delete_refs_list , refname );
1345+ for_each_string_list_item (item , & states .stale ) {
1346+ const char * refname = item -> util ;
13521347
13531348 if (!dry_run )
13541349 result |= delete_ref (refname , NULL , 0 );
@@ -1361,9 +1356,9 @@ static int prune_remote(const char *remote, int dry_run)
13611356 abbrev_ref (refname , "refs/remotes/" ));
13621357 }
13631358
1364- warn_dangling_symrefs (stdout , dangling_msg , & delete_refs_list );
1365- string_list_clear (& delete_refs_list , 0 );
1359+ warn_dangling_symrefs (stdout , dangling_msg , & refs_to_prune );
13661360
1361+ string_list_clear (& refs_to_prune , 0 );
13671362 free_remote_ref_states (& states );
13681363 return result ;
13691364}
0 commit comments