Repository navigation
Tracking: Git v3 breaking changes planning #567918
Description
Git v3.0 is coming. As of 28 September 2026, Git upstream have not agreed or committed to any particular date, but spring 2027 has been proposed. This version will introduce a bunch of breaking changes for a lot of the Nixpkgs ecosystem, especially fetchgit, so I'm raising this issue to track what those are and how we're resolving them.
More context and background
Quoting Johannes Schindelin's summary from the Git Contributor Summit:The proposed target is spring 2027: v2.56 in September 2026, v2.98 in December, then v2.99 and v3.0 next spring. The jump in version numbers is intended to signal the approaching breaking changes. March and April were both mentioned; the precise timing is not settled.
There was agreement on releasing v2.99.1 and v3.0 together, differing only in the BREAKING_CHANGES (v3.0 switches them on). That keeps the transition separate from another round of feature development.
The v2.99 version provides an escape hatch if we need it, and it seems likely that someone in the OSS community will keep providing support and patches for v2.99 for at least several years. I expect Nixpkgs will want to provide git2 packages once v3.0 comes out. Nonetheless, I'd prefer us to stay on the fully supported upstream release as much as possible, which means working out how we deal with all the breaking changes.
I'll raise separate issues for separate problems / decision points / &c, and try to keep this top-level issue updated with links and references as appropriate. If you find a problem, feel free to note it here and/or raise a separate issue.
This is my first attempt at running this sort of big project in Nixpkgs. I'm very happy to take hints and suggestions on how to handle things if you think there's anything I'm missing! Feel free to comment here or reach out to me privately.
Critical fixes
- Rust support: gitMinimal: enable rust support #567405 (@winterqt)
- Build failures:
-
test.fetchgit+fetchgit { leaveDotGit = true; ... }: fetchgit subtests and fetching withleaveDotGit = truefails if Git haswithBreakingChanges = true#571319 -
python3Packages.dunamai:python3Packages.dunamaifails if Git haswithBreakingChanges = true#571330 / python3Packages.dunamai: 1.26.2 -> 1.26.3 #574373 -
git-lfs:git-lfsfails to build if Git haswithBreakingChanges = true#571745 -
nix/nix-functional-tests:nix-functional-testsfails to build if Git haswithBreakingChanges = true#571765 -
python3Packages.dulwich: Build failure: python3Packages.dulwich if Git haswithBreakingChanges = true#574788 -
flutter: Build failure: flutter.passthru.unwrapped if Git haswithBreakingChanges = true#575366 / flutter: improve build determinism #575372
-
- External dependencies:
-
nixflakes lack support for git with sha256: Support the sha256 git object format nix#9980 / [Do not merge yet] Support SHA-256 git repos with libgit2 experimental API nix#14526
-
Optional extras
- Allow building Git v2 packages with breaking features enabled: git: add
withBreakingChangesoverride parameter #567771 (@me-and) - Ensure Rust support: git: withBreakingChanges requires rustSupport #572076
Decisions / planning / philosophy
- Scheduling and release planning: Git v3 release schedule planning #570457
- Identify blocking problems: Identify blocking issues and build failures for Git v3 #571767
- Handling build failures in
pkgsArocc: Build failure: pkgsArocc.gitMinimal #574360 (might move to "critical fixes" or "optional extras" depending on discussions in that issue)
Tagging relevant parties:
Activity
philiptaron commentedon Sep 28, 2026
@winterqt as well.
leaveDotGit = truefails if Git haswithBreakingChanges = true#571319python3Packages.dunamaifails if Git haswithBreakingChanges = true#571330git-lfsfails to build if Git haswithBreakingChanges = true#571745nix-functional-testsfails to build if Git haswithBreakingChanges = true#571765ap-1 commentedon Oct 9, 2026
iirc git v3 will default new repos to sha-256, now we really need a solution to flakes not supporting sha-256 NixOS/nix#9980
progress:
me-and commentedon Oct 10, 2026
Good find, thank you! I've added it to the list of sub-issues.
withBreakingChanges = true#574788withBreakingChanges = true#575366