Re: [PATCH] pack-objects: reuse data from existing pack.
- From
Andreas Ericsson <ae@op5.se>
- Date
- Feb 16, 2006, 08:32 UTC
- Message-ID
- <43F438AA.1040508@op5.se>
- In-Reply-To
- <7vbqx8m62q.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano wrote:
Show 41 quoted lines
> When generating a new pack, notice if we have already the wanted > object in existing packs. If the object has a delitified > representation, and its base object is also what we are going to > pack, then reuse the existing deltified representation > unconditionally, bypassing all the expensive find_deltas() and > try_deltas() routines. > > Also, when writing out such deltified representation and > undeltified representation, if a matching data already exists in > an existing pack, just write it out without uncompressing & > recompressing. > > Without this patch: > > $ git-rev-list --objects v1.0.0 >RL > $ time git-pack-objects p <RL > > Generating pack... > Done counting 12233 objects. > Packing 12233 objects.................... > 60a88b3979df41e22d1edc3967095e897f720192 > > real 0m32.751s > user 0m27.090s > sys 0m2.750s > > With this patch: > > $ git-rev-list --objects v1.0.0 >RL > $ time ../git.junio/git-pack-objects q <RL > > Generating pack... > Done counting 12233 objects. > Packing 12233 objects..................... > 60a88b3979df41e22d1edc3967095e897f720192 > Total 12233, written 12233, reused 12177 > > real 0m4.007s > user 0m3.360s > sys 0m0.090s >
Whoa! Columbus and the egg. Strange noone saw it before. It's so obvious when you shove it under the nose like that. :)
Now that pack-creation went from bizarrely expensive to insanely cheap (well, comparable to "tar czf" anyways), what's BCP for packing a public repository? Always one mega-pack and never worry, or should one still use incremental and sometimes overlapping pack-files?
-- Andreas Ericsson andreas.ericsson@op5.se OP5 AB www.op5.se Tel: +46 8-230225 Fax: +46 8-230231