Thread (19 messages) flat view 19 messages, 7 authors, 2016-06-15

Re: Why repository grows after "git gc"? / Purpose of *.keep files?

From: Shawn O. Pearce <hidden>
Date: 2016-06-15 22:44:36

Mike Hommey [off-list ref] wrote:
On Mon, May 12, 2008 at 11:03:04PM +0200, Mike Hommey wrote:
quoted
On Mon, May 12, 2008 at 11:24:14PM +0300, Teemu Likonen wrote:
quoted
But I have experienced the same earlier with some other post-1.5.5
version so I believe you can reproduce this yourself. After cloning
Linus's linux-2.6 repo its .git directory weights 209MB. After single
"git pull" and "git gc" it was 298MB in my test.
I noticed that a while ago: when repacking multiple packs when one has a
.keep file, the resulting additional pack contains too many blobs and
trees, contrary to when only packing loose objects:
(...)

That is, it seems to also contain all the blobs and subtrees for all the
commits the pack contains, even when they already are in the pack having
a .keep file.
I've noticed this too.  Like since day 1 when we added .keep.
But uh, nobody else complained and I forgot about it.

My theory (totally unproven) is that the new pack has objects we
copied from the .keep pack, because those objects were the best
delta-bases for the loose objects we have deltafied and want to
store in the new pack.  Except they aren't yet packed in the new
pack, so we pack them too.  Tada, duplicates.  :-\

Suddenly your repository nearly doubles in size if we have most
files/trees change, as those delta bases are copied whole into the
new pack.

-- 
Shawn.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help