On 10/13/2016 01:47 AM, Jeff King wrote:
On Wed, Oct 12, 2016 at 07:18:07PM -0400, Jeff King wrote:
Also, is it possible to make the repository in question available? I
might be able to reproduce based on your description, but it would save
time if I could directly run gdb on your example.
I won't be able to make the repository available, sorry.
I tried this by making a bunch of packs in linux.git (my standard "this
is pretty big" repo), like so:
for i in $(seq 1000); do
git rev-list --objects HEAD~$((i+1))..HEAD~$i |
git pack-objects --delta-base-offset .git/objects/pack/pack
and then doing a 25,000-object fetch from upstream (no significance to
the number; that's just how far behind upstream I happened to be).
However, I didn't notice any regression. In fact, it was much _slower_
than v1.9.0, because that older version didn't have threaded index-pack.
If you can't share the repo directly, can you tell us more about your
fetch? How many objects are in your repository? How many objects are
fetched? How many refs are there on the remote side?
The fetch doesn't actually get anything from the remote as everything is
already up to date (that makes the 2m40s times even more frustrating in
a way :-)). Here's count-objects:
$ git count-objects -v
warning: garbage found: .git/objects/pack/tmp_pack_pAZcu4
warning: garbage found: .git/objects/pack/tmp_pack_KhzrrI
warning: garbage found: .git/objects/pack/tmp_pack_mycfro
warning: garbage found: .git/objects/pack/tmp_pack_2kxKOn
There are some 20k refs on the remote, closer to 25k locally.
I'll try to get a profile (without your patch) before doing a gc run.