except that all packs that meet the threshold are kept, not
just the base pack. Defaults to zero. Common unit suffixes of
'k', 'm', or 'g' are supported.
++
+Note that if the number of kept packs is more than gc.autoPackLimit,
+this configuration variable is ignored, all packs except the base pack
+will be repacked. After this the number of packs should go below
+gc.autoPackLimit and gc.bigPackThreshold should be respected again.
gc.logExpiry::
If the file gc.log exists, then `git gc --auto` won't run
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);