Skip to content

Makefile: Add more patches to speed up git-fetch(1) to v2.35.1.gl1

The rollout of Git v2.35.1.gl1 is currently blocked in production because we have discovered various repositories where broken references cause errors with the new version. So right now, the new Git version is still disabled in all deployments, also because the feature flag is default-disabled, as well.

This blockade gives us a last chance to sneak in some patches for Git v2.35.1.gl1 which have landed in next meanwhile. Missing this chance would mean that we'd have to wait a few more releases until we can land another revision, or otherwise we'd be running with three different Git versions in production at the same time: the current Git v2.33.1.gl3, then Git v2.35.1.gl1, and finally the new version we'd be about to introduce. So let's take this chance and slightly bend the rollout process of new Git versions.

Apply commits from 60aae8731c (Merge branch 'ps/fetch-mirror-optim' into next, 2022-03-08) into Git v2.35.1.gl1. These patches optimize fetches by:

- Patch 1/5 starts to look up up "want" lines via the commit-graph,
  resulting in a 7% speedup.

- Patch 2/5 avoids repeated lookups of commits that were only
  required when writing to FETCH_HEAD, providing a 8% speedup.

- Patches 3-5/5 start to skip reading packed-refs when searching for
  symbolic refs in the context of a fetch. This provides a 13%
  speedup.

All benchmarks have been performed in www-gitlab-com.

Changelog: performance

Closes #4104 (closed)

Edited by Patrick Steinhardt

Merge request reports