git-gc "--aggressive" somewhat broken

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This flag seems misdesigned as-is.

It makes the window bigger (good, and aggressive), but it also enabled 
"-f".

Which sometimes causes _worse_ packing.

In particular, there's a gcc import at

	git://git.infradead.org/toolchain/gcc.git

which apparently packs down quite nicely to a 450MB pack, but when it gets 
repacked "aggressively", it blows up to 1.4GB. The reason? That pack was 
generated using --depth=100 --window=100 (I think).

So under certain circumstances, "--aggressive" is anything _but_ 
aggressive, and actually causes much worse packing.

If we want to be really aggressive, we migth decide to pass a new flag to 
pack-objects that does something closer to what "aggressive" was meant to 
do: it would use existing delta's if they exist, but _despite_ existing it 
could look if there are even better choices.

So right now we have:

 - default behaviour:

   always re-use existing deltas, don't look at alternatives at all.

   This is optimal for CPU/memory/IO usage, and is generally a good idea

 - "-f" (and as a result, the current bad "git gc --aggressive"):

   never re-use existing deltas, always look for new ones.

   This is good if you have reason to believe that the old choices are 
   bad, or you need to force re-generation of deltas (because you want to 
   force a new pack-file format, for example)

and the missing piece might be

 - "git pack-objects --aggressive":

   re-use existing deltas _and_ look for even better ones.

   This is good if all you're looking for is better packing.

Hmm?

		Linus
-
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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux