Re: What's cooking in git.git (topics)
- From
Johan Herland <johan@herland.net>
- Date
- Jun 19, 2008, 08:58 UTC
- Message-ID
- <200806191058.58074.johan@herland.net>
- In-Reply-To
- <7v3anb19n7.fsf@gitster.siamese.dyndns.org>
On Wednesday 18 June 2008, Junio C Hamano wrote:
Show 10 quoted lines
> [New Topics] > > * jh/clone-packed-refs (Sun Jun 15 16:06:16 2008 +0200) 4 commits > - Teach "git clone" to pack refs > - Prepare testsuite for a "git clone" that packs refs > - Move pack_refs() and friends into libgit > - Incorporate fetched packs in future object traversal > > Would be helpful cloning from a repository with insanely large number of > refs.
The first 3 patches (i.e. the bottom 3 in the above list) might be considered general cleanup patches, and are independent of each other (i.e. you might want to include them on their own merit, independently of patch #4).
The final patch doesn't make any difference for "regular" repos (e.g. git.git with ~200 refs) on Linux (see below). But once the number of refs increase, the difference becomes obvious.
Here are some numbers to give some more context:
All tests done on 64-bit quad-core Linux, cloning locally (hard-linked):
~200 refs (git.git): current next: 0.2s w/above patches: 0.2s
~1000 refs (test repo): current next: 0.16s w/above patches: 0.05s
~11000 refs (test repo): current next: 1.3s w/above patches: 0.3s
~26000 refs (actual repo at $dayjob): current next: 3.2s w/above patches: 0.8s
Regards,
...Johan
-- Johan Herland, <johan@herland.net> www.herland.net