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
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
Johan Herland, <email@example.com>