if (too_many_packs()) {
struct string_list keep_pack = STRING_LIST_INIT_NODUP;
- if (big_pack_threshold)
+ if (big_pack_threshold) {
find_base_packs(&keep_pack, big_pack_threshold);
+ if (keep_pack.nr >= gc_auto_pack_limit) {
+ big_pack_threshold = 0;
+ string_list_clear(&keep_pack, 0);
+ find_base_packs(&keep_pack, 0);
+ }
+ }
add_repack_all_option(&keep_pack);
string_list_clear(&keep_pack, 0);