I recently upgraded from 2.52 to 2.55, and 2.55 is so slow I had to disable my __git_ps1 function.
This is a MS internal large monorepo where I use scalar to clone only parts of it.
I had copilot try to figure out why, it installed the old and new versions, and this is what it concluded:
Diagnosis complete.
The slowdown is a Microsoft Git 2.55 regression exposed by two unusual characteristics of this repository:
- __git_ps1 trigger: it runs git rev-parse --short HEAD . This repo’s 39 GB Scalar/VFS shared cache contains 37,815 .pack + 37,815 .idx files and 21.2 million indexed objects. Microsoft Git 2.52 takes ~0.4 s to abbreviate HEAD ; 2.55 takes ~4.5 s. In 2.55, the lookup references the shared cache about 75,627 times, versus 37,808 in 2.52. git rev-parse HEAD without abbreviation remains instantaneous, and --short=40 is also instantaneous.
- Status/diff trigger: the sparse index has 56,919 physical entries, including 429 sparse directories representing about 402,915 logical paths. Both versions perform the same 12 tree traversals to depth
- That traversal takes 0.08 s in Microsoft Git 2.52 but 4.74 s in 2.55. Filesystem refresh, untracked scanning, hooks, index reading, hashing, staged changes, and rename detection are not the bottleneck.
The package log confirms Microsoft Git was upgraded from 2.52.0.vfs.0.5 to 2.55.0.vfs.0.3 on July 27, matching the reported onset. A read-only A/B test used the official Microsoft 2.52 release extracted into session storage—not Ubuntu Git—and showed status / diff at roughly 0.45–0.54 s under 2.52 versus 4–5 s under 2.55 on the same repository and index.
The repository exposes regressions in Microsoft Git 2.55’s object-ID abbreviation over a highly fragmented VFS cache and tree comparison over a large sparse index.
While, yes, my repository may need some fixing (or to throw it away and create a new one), the big performance regression is worth investigating.
I recently upgraded from 2.52 to 2.55, and 2.55 is so slow I had to disable my __git_ps1 function.
This is a MS internal large monorepo where I use scalar to clone only parts of it.
I had copilot try to figure out why, it installed the old and new versions, and this is what it concluded:
While, yes, my repository may need some fixing (or to throw it away and create a new one), the big performance regression is worth investigating.