Re: Keeping unreachable objects in a separate pack instead of loose?
- From
Thomas Rast <trast@student.ethz.ch>
- Date
- Jun 11, 2012, 14:44 UTC
- Message-ID
- <87vcixaoxe.fsf@thomas.inf.ethz.ch>
- In-Reply-To
- <bb7062f387c9348f702acb53803589f1.squirrel@webmail.uio.no>
"Hallvard B Furuseth" <h.b.furuseth@usit.uio.no> writes:
Show 26 quoted lines
> On Sun, June 10, 2012 14:31, Theodore Ts'o wrote: >> 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. > > I got gigabytes once, and a full disk. See thread > "git gc == git garbage-create from removed branch", May 3 2012. > >> 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? > > I think this should be the default. It's very unintuitive that > gc can eat up lots of disk space instead of saving space. > > Until this is fixed, this behavior needs to be documented - > along with how to avoid it.
Starting with v1.7.10.2, and in the v1.7.11-rc versions, there's a change by Peff: 7e52f56 (gc: do not explode objects which will be immediately pruned, 2012-04-07). Does it solve your problem?
--
Thomas Rast
trast@{inf,student}.ethz.ch