On Wed, Feb 19, 2014 at 3:59 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > I didn't know --agressive was so aggressive myself, as I personally > never use it. "git repack -a -d -f --depth=32 window=4000" is what I > often use, but I suspect most people would not be patient enough for > that 4k window. > > Let's do something like this first and then later make --depth > configurable just like --width, perhaps? For "aggressive", I think > the default width (hardcoded to 250 but configurable) is a bit too > narrow. OK with git://git.savannah.gnu.org/emacs.git we have - a 209MB pack with --aggressive - 1.3GB with --depth=50 - 1.3GB with --window=4000 --depth=32 - 1.3GB with --depth=20 - 821MB with --depth=250 for commits --before=2.years.ago, --depth=50 for the rest So I don't think we should go with your following patch because the size explosion is just too much no matter how faster it could be. An immediate action could be just make --depth=250 configurable and let people deal with it. A better option is something like "3 repack steps" you described where we pack deep depth first, mark .keep, pack shallower depth and combine them all into one. I'm not really happy with --depth=250 producing 209MB while --depth=250 --before=2.year.ago a 800MB pack. It looks wrong (or maybe I did something wrong) > > builtin/gc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/builtin/gc.c b/builtin/gc.c > index 6be6c8d..0d010f0 100644 > --- a/builtin/gc.c > +++ b/builtin/gc.c > @@ -204,7 +204,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix) > > if (aggressive) { > argv_array_push(&repack, "-f"); > - argv_array_push(&repack, "--depth=250"); > + argv_array_push(&repack, "--depth=20"); > if (aggressive_window > 0) > argv_array_pushf(&repack, "--window=%d", aggressive_window); > } -- Duy -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html