Skip to content

feat: Allow config cache for microsoft/git 2.53.0.vfs.0.1+#2296

Merged
mjcheetham merged 1 commit intogit-ecosystem:mainfrom
derrickstolee:config-list-vfs
Mar 18, 2026
Merged

feat: Allow config cache for microsoft/git 2.53.0.vfs.0.1+#2296
mjcheetham merged 1 commit intogit-ecosystem:mainfrom
derrickstolee:config-list-vfs

Conversation

@derrickstolee
Copy link
Copy Markdown
Contributor

@derrickstolee derrickstolee commented Mar 18, 2026

This is a small modification on top of #2268 that updates the Git version check to allow using the cached list of config values when using the latest microsoft/git release.

The 2.53.0.vfs.0.1 (and later) releases have microsoft/git#863 which fast-tracked the upstream Git feature that enables this behavior.

Getting a GCM release with this version check will allow us to dogfood this performance feature.

I expect that we'd want to release GCM with this feature and have users manually install GCM from the GitHub releases page instead of waiting for a new microsoft/git release that bundles it.

I have run the test suite with this branch with microsoft/git v2.53.0.vfs.0.2 installed. I also tested by adding some thrown exceptions in the logic that only activates when the Git version check works, and that proved that the test suite does cover these cases when the right Git version exists.

Context:
The config cache version gate requires Git 2.54.0+ because that
is when upstream Git will include the fix for 'git config list
--type=<X>'. However, the microsoft/git fork may fast-track this
fix into a 2.53.0.vfs.0.1 release, allowing users of Git for
Windows (VFS-enabled builds) to benefit from the cache sooner.

Justification:
The microsoft/git fork uses version strings like
'2.53.0.vfs.0.1' where the '.vfs.' marker distinguishes it from
upstream Git. GitVersion parsing stops at the non-integer 'vfs'
component, so a simple numeric comparison would treat this as
2.53.0 and disable caching. We need an additional check that
recognizes VFS builds and compares their suffix version.

The base version (2.53.0) and VFS suffix (0.1) are checked
separately, allowing any future 2.53+ VFS build with the fix
to also benefit. Upstream 2.54.0+ continues to pass the existing
numeric check without hitting the VFS path.

Implementation:
Added SupportsConfigListType() helper that first checks the
upstream minimum (2.54.0), then looks for '.vfs.' in the original
version string. For VFS builds, it parses the base version and
VFS suffix independently and checks both against their respective
minimums (2.53.0 and 0.1).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@derrickstolee derrickstolee requested a review from a team as a code owner March 18, 2026 12:55
@mjcheetham mjcheetham enabled auto-merge March 18, 2026 12:59
@mjcheetham mjcheetham merged commit ee73630 into git-ecosystem:main Mar 18, 2026
10 checks passed
@mjcheetham mjcheetham mentioned this pull request Apr 28, 2026
mjcheetham added a commit that referenced this pull request Apr 28, 2026
**Changes:**
 
- Workload Identity Federation for Azure Repos (#2297)
- Git config caching to reduce git process calls
  - #2268
  - #2296
  - #2298
- Dark theme support for OAuth authentication response pages (#2325)
- Allow installing on Azure Linux (#2269)
- Fix GPG ID lookup for `.gpg-id` in subdirectories (#2274)
- Fix CS0121 `string.Split` call ambiguity with .NET 8.0 (#2287)
- Fix SYSLIB0057 warning for `X509Certificate2Collection.Import` (#2326)
- Fix several small bugs (#2303)
- Migrate to .NET 10 (Mac/Linux) and adopt Central Package Management
(#2313)
- Bump `Tmds.DBus.Protocol` from 0.16.0 to 0.21.3 (#2316)
- Azure Pipelines: specify `pool.hostArchitecture` correctly (#2323)
- Documentation updates
  - #2283
  - #2299
- Actions dependency updates
  - #2242
  - #2271
  - #2272
  - #2282
  - #2301
  - #2315
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants