Add pack-objects window memory usage limit
commita97773ce7e4fb635615d3b363f144d8c8a780fea
authorBrian Downing <bdowning@lavos.net>
Thu, 12 Jul 2007 13:07:46 +0000 (12 08:07 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 12 Jul 2007 21:32:35 +0000 (12 14:32 -0700)
tree6e8b321e6e3cefc2310b5c02fdf33d90eeddb975
parent0b87b6e081e75170ffa40e92aebde1e22ad3161e
Add pack-objects window memory usage limit

This adds an option (--window-memory=N) and configuration variable
(pack.windowMemory = N) to limit the memory size of the pack-objects
delta search window.  This works by removing the oldest unpacked objects
whenever the total size goes above the limit.  It will always leave
at least one object, though, so as not to completely eliminate the
possibility of computing deltas.

This is an extra limit on top of the normal window size (--window=N);
the window will not dynamically grow above the fixed number of entries
specified to fill the memory limit.

With this, repacking a repository with a mix of large and small objects
is possible even with a very large window.

Cleaner and correct circular buffer handling courtesy of Nicolas Pitre.

Signed-off-by: Brian Downing <bdowning@lavos.net>
Acked-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-pack-objects.c