Keeping unreachable objects in a separate pack instead of loose?
- From
Theodore Ts'o <tytso@mit.edu>
- Date
- Jun 10, 2012, 12:31 UTC
- Message-ID
- <E1SdhJ9-0006B1-6p@tytso-glaptop.cam.corp.google.com>
I recently noticed that after a git gc, I had a huge number of loose objects that were unreachable. In fact, about 4.5 megabytes worth of objects.
When I packed them, via:
cd .git/objects ; find [0-9a-f][0-9a-f] -type f | git pack-objects pack
the resulting pack file was 244k.
Which got me thinking.... the whole point of leaving the objects loose is to make it easier to expire them, right? But given how expensive it is to have loose objects lying around, why not:
a) Have git-pack-objects have an option which writes the unreachable
objects into a separate pack file, instead of kicking them loose?b) Have git-prune delete a pack only if *all* of the objects in the
pack meet the expiry deadline?What would be the downsides of pursueing such a strategy? Is it worth trying to implement as proof-of-concept?
- Ted