New Features
- Introduce core.trustLooseRefStat config that will optionally refresh file attributes of loose refs (at least on some NFS clients)
- DfsPackFile: Abstract the bitmap loading to support other backends
- jgit-25 Support public key in the SSH configuration's "IdentityFile"
- jgit-24 Add SystemReader.Delegate to reduce boiler-plate code needed to subclass
- [gpg] Refactor the GpgSignatureVerifier to facilitate implementing an alternate GpgSignatureVerifier
- CherryPick: allow to customize cherry-picked commit message via a custom CherryPickCommitMessageProvider
- PackBitmapIndex/StoredBitmap: Expose size and counts
- PackWriter: store the objects with bitmaps in the statistics
Performance Improvements
- DfsReader#getObjectSize: use size index if possible to avoid IO reading it from the object
- 580137 Introduce a PriorityQueue sorting RevCommits by commit timestamp which can be enabled by setting system property REVWALK_USE_PRIORITY_QUEUE=true. By default the old implementation DateRevQueue is used.
- PackWriterBitmapPreparer: Set limit on excessive branch count
- jgit-5 BasePackFetchConnection: Skip object/ref lookups if local repo is empty to speedup cloning
- jgit-5 LooseObjects: if `trustFolderStat` flag is enabled use File#exists when possible instead of rethrowing `FileNotFoundException`
Bug Fixes
- jgit-15 Discover bitmap index on disk created after the packfile without requiring a restart
- storage.file: Do not throw NSFE when deleting tmp files
- FS.detectSymlinkSupport: fix a race
- RefDirectory: Do not unlock until after deleting loose ref to fix a potential race
- jgit-21 SnapshottingRefDirectory: Invalidate snapshot after locking ref for update to avoid race
- jgit-17 Don't use localized String during JVM shutdown
- RawParseUtils.nextLfSkippingSplitLines: return the buffer length also if there is no newline after the last header
- RawParseUtils: add utility method to get a header value to prevent external GPG chokes on a signature blob with leading blanks
- 573770 Mark packfile as invalid when NFS stale handle error occurs. This should fix broken fetch operations when the repo is located on NFS and is GC'ed on a separate system (or process)
- Fix handling of missing pack index file
- jgit-6 RebaseCommand: fix stopping on root commit conflicts
- FooterLines: handle extraction from messages without headers
- FooterLine: Protect from ill-formed message
- FooterLine: First line cannot be a footer
- Improve footer parsing to allow multiline footers
- jgit-4 Make sure ref to prune is in packed refs
- StartGenerator: Fix parent rewrite with non-default RevFilter
Build and Release Engineering
Update dependencies
- jgit-16 Apache MINA sshd to 2.12.0. This includes the upstream fix for CVE-2023-48795[1] ("strict KEX protocol extension mitigating the "Terrapin attack"[2]) in JGit.
[1] https://nvd.nist.gov/vuln/detail/CVE-2023-48795
[2] https://www.terrapin-attack.com/ - byte-buddy to 1.14.12
- jetty to 10.0.20
- jmh to 1.37
- jna to 5.14.0
- mockito to 5.8.0
- org.apache.commons:commons-compress to 1.26.0
- org.assertj:assertj-core to 3.25.3
- org.mockito:mockito-core to 5.10.0 and add dependency to commons-io:commons-io:2.15.1.
Update maven plugins
- build-helper-maven-plugin to 3.5.0
- cyclonedx-maven-plugin to 2.7.11
- ecj to 3.36.0
- eclipse-jarsigner-plugin to 1.4.3
- git-commit-id-maven-plugin to 7.0.0
- jacoco-maven-plugin to 0.8.11
- japicmp-maven-plugin to 0.18.5
- maven-clean-plugin to 3.3.2
- maven-compiler-plugin to 3.12.1
- maven-dependency-plugin to 3.6.1
- maven-enforcer-plugin to 3.4.1
- maven-javadoc-plugin to 3.6.3
- maven-jxr-plugin to 3.3.2
- maven-pmd-plugin to 3.21.2
- maven-project-info-reports-plugin to 3.5.1
- maven-shade-plugin to 3.5.1
- maven-site-plugin to 4.0.0-M13
- maven-surefire-plugin to 3.2.3
- org.eclipse.dash:license-tool-plugin to 1.1.0
- spotbugs-maven-plugin to 4.8.3.1
- tycho plugins to 4.0.6
Miscellaneous
- egit-5 Allow using slf4j 2.x (used by Eclipse platform) by relaxing version constraint so
- Add 4.31 target platform and update orbit to 4.31
- Configure .gitattributes to manage line endings
- Normalize line endings to LF for all text files
- Configure Github issue reporting