> Sun Chao (my former colleague at Huawei) found a bug of > git-pack-redundant. If there are too many packs and many of them > overlap > each other, running `git pack-redundant --all` will exhaust all memories > and the process will be killed by kernel. > > There is a script in commit log of commit 2/3, which can be used to > create a repository with lots of redundant packs. Running `git > pack-redundant --all` in it can reproduce this issue. SZEDER reported that t5233 won't pass for MacOS. See solution in patch 4/5. Changes since reroll v4: * Rewrite t5323, add more test cases. * Add two new patches, one for refactor, and another changed sorting method and fixed t5323 for the new algorithm. Range diff with sc/pack-redundant feature branch: 1: 702267a888 < -: ---------- t5323: test cases for git-pack-redundant -: ---------- > 1: 40fea5d67f t5323: test cases for git-pack-redundant 2: c4b133d858 = 2: 50cd5a5b47 pack-redundant: new algorithm to find min packs -: ---------- > 3: 6338c6fad4 pack-redundant: rename pack_list.all_objects -: ---------- > 4: 734f4d8a8b pack-redundant: consistent sort method 3: 2351d7e8b5 ! 5: b7ccdea1ad pack-redundant: remove unused functions @@ -13,7 +13,7 @@ --- a/builtin/pack-redundant.c +++ b/builtin/pack-redundant.c @@ - struct llist *all_objects; + size_t all_objects_size; } *local_packs = NULL, *altodb_packs = NULL; -struct pll { @@ -105,7 +105,7 @@ - diff = llist_copy(list); - - while (pl) { -- llist_sorted_difference_inplace(diff, pl->all_objects); +- llist_sorted_difference_inplace(diff, pl->remaining_objects); - if (diff->size == 0) { /* we're done */ - llist_free(diff); - return 1; Jiang Xin (3): t5323: test cases for git-pack-redundant pack-redundant: rename pack_list.all_objects pack-redundant: consistent sort method Sun Chao (2): pack-redundant: new algorithm to find min packs pack-redundant: remove unused functions builtin/pack-redundant.c | 221 +++++++++++++++----------------------- t/t5323-pack-redundant.sh | 157 +++++++++++++++++++++++++++ 2 files changed, 242 insertions(+), 136 deletions(-) create mode 100755 t/t5323-pack-redundant.sh -- 2.20.1.101.gc01fadde4e