Features
- Improve parsing of commit message trailers to allow multiline trailers
- BitmapIndex: Add interface to track bitmaps found (or not) for monitoring
- CommitGraphWriter: Add progress monitor to bloom filter computation during gc
- CommitGraphWriter: Unnest reporting of generation-number progress
- 582292 Add support for git config option repack.packKeptObjects
- Use ShutdownHook to gracefully handle JVM shutdown in all classes which already registered their own shutdown hook
- 582379 Add ShutdownHook to cleanup FileLocks on graceful JVM shutdown to avoid stale lock files if the JVM is terminated gracefully.
- Unregister ShutdownHook when GC#PidLock is closed
- 342790 RevertCommand: support for inserting a Gerrit change ID
Performance Improvements
- 578550 Optimize RefDirectory.getRefsByPrefix(String...) by matching all ref prefixes in one pass over all refs.
- UploadPack: use want-refs as advertised set in fetch v2. Treat wanted-refs like a ref-prefix when calculating the advertised refs on v2 fetch command. Less refs means a faster setup and less walk for the reachability checks.
Bug Fixes
- 582538 Fix branch ref existence check. When a tag with the same name as the branch exists, branch creation should work too.
- BasePackFetchConnection: Avoid full clone with useNegotiationTip
- 451508 FileBasedConfig: in-process synchronization for load() and save() to prevent deleting content of the config on Windows.
- 451508 FileUtils.rename(): better retry handling when atomic move fails on Windows
- 451508 FileBasedConfig: ensure correct snapshot if no config file exists
- 451508 DeleteBranchCommand: update config only at the end if multiple branches are deleted
- 582526 RebaseCommand: return correct status on stash apply conflicts. Ensure that also the fast-forward cases return status STASH_APPLY_CONFLICTS when applying the stash produces conflicts.
- 582292, 582455 Do not exclude objects in locked packs from bitmap processing. Introduce the '--pack-kept-objects' option in GC for including the objects contained in the locked packfiles during the repack phase, to avoid accidental pruning during GC.
- 582394 OSGi: move plugin localization to subdirectory to avoid filename clashes in non-OSGi environment.
- DfsPackFile: Record index load event only in one place
Build and Release Engineering
Git repositories were migrated to GerritHub including all review data.
See the blog 14 Years of JGit/EGit Code Reviews migrated to GerritHub.
Update dependencies
- bouncycastle to 1.77
- bytebuddy to 1.14.9
- jetty to 10.0.18
- org.apache.ant to 1.10.14
- org.apache.commons:commons-compress to 1.25.0
- org.apache.sshd to 2.11.0
- mockito to 5.7.0
Update build
- orbit to orbit-aggregation/2023-12
- bazel to 6.3.2
- org.eclipse.jdt:ecj to 3.35.0
Other improvements
- Add target platform for Eclipse 4.30 (2023-12)
- Use net.i2p.crypto.eddsa 0.3.0 from new Orbit build
- Update repository URLs in CONTRIBUTING.md after the move to eclipse.gerrithub.io.
- Update bazlets to f9c119e45
- Enable Maven reproducible builds using timestamp of last commit.
- Generate SBOMs using cyclonedx maven plugin