From: Andreas Ericsson Date: Thu, 16 Feb 2006 08:32:42 GMT Subject: Re: [PATCH] pack-objects: reuse data from existing pack. Message-ID: <43F438AA.1040508@op5.se> In-Reply-To: <7vbqx8m62q.fsf@assigned-by-dhcp.cox.net> Junio C Hamano wrote: > 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 > 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 > 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