6.7.0
Security Fixes
Features
- 442284 Merge: Add diff3 style merge conflict formatter.
- 581875 Handle global git config $XDG_CONFIG_HOME/git/config
- 436127 Default for global (user) git ignore file $XDG_CONFIG_HOME/git/ignore
- Add support for PKCS#11 HSMs (like YubiKey PIV) for SSH authentication.
- DFSGarbargeCollector: Write object size indices to packs
- DfsReader: Expose an interface to announce when an index is loaded
- Allow FollowFilter's rename callback to identify the commit that generates a diffEntry on a rename Event.
- PackReverseIndexV1: add support for parsing reverse index version 1 files
- PackReverseIndex: open file if present otherwise compute
- PackReverseIndex: verify checksums
- Gc#writePack: implement writing reverse index file to disk
- CommitGraphWriter: add options "commitGraph.writeChangedPaths", "commitGraph.readChangedPaths" controlling whether bloom filters are written and read.
- CommitGraphLoader: read changed-path filters to add support for reading the BIDX and BDAT chunks of the commit graph file, as described in gitformat-commit-graph(5).
- CommitGraphWriter: Add support for writing the BIDX and BDAT chunks of the commit graph file, as described in gitformat-commit-graph(5).
- DfsGarbageCollector: provide commit graph stats
Performance Improvements
- IO: use JDK convenience methods which allow certain InputStreams overriding the default implementation for performance reasons.
- Introduce a core.packedIndexGitUseStrongRefs configuration key (default: true). Setting it to false allows soft references to be used for Pack indices. This reduces overall heap size required to run commands which access pack indices.
- DfsGarbageCollector: put only GC commits reachable from branches and tags into the commit graph to reduce size of commit graphs
- RevCommitCG: Read changed-path-filters directly from commit graph to save memory
- Pack: open reverse index from file if present instead of recomputing it
- CommitGraphWriter: reuse changed path filters
- Teach RevWalk, TreeRevFilter, PathFilter, and FollowFilter to use changed path filters, whenever available, to speed revision walks by skipping commits that fail the changed path filter.
- DfsInserter: populate full size on object insertion. Then we don't need to re-read it from the pack at indexing time.
- DfsReader/PackFile: Implement isNotLargerThan using the obj size idx to avoid reading the size of a blob from disk using the object size idx if available.
Refactorings
- Move footer-line parsing methods from RevCommit to FooterLine
- PackReverseIndex: use static builder instead of constructor
Bug Fixes
- GC: Remove handling of extra pack for RefTree which was removed earlier
- DfsPackParser: Create object indices if config says so
- 582039 Express the explicit intention of creating bitmaps in GC to allow the GC.repack() phase to explicitly generate bitmaps only for the heads packfile and not for the others.
- 581532 GC: prune all packfiles after the loosen phase. This prevents a series of exceptions previously thrown when loosening the packfiles.
- Fix S3Repository getSize to handle larger object sizes
- Mark COMMIT_GENERATION_UNKOWN, COMMIT_GENERATION_NOT_COMPUTED constants final
- 582044 Revert "RefDirectory: Throw exception if compare-and-swap of packed ref list fails"
Build an Release Engineering
Update dependencies
- bouncycastle to 1.76
- byte-buddy to 1.14.7
- commons-codec to 1.16.0
- jmh to 1.37
- mockito to 5.5.0
- Orbit to orbit-aggregation/release/4.29.0
Update build environment
- bazel to 6.2.0
- build-helper-maven-plugin to 3.4.0
- eclipse-jarsigner-plugin to 1.4.2
- maven-compiler-plugin to 3.11.0
- maven-enforcer-plugin to 3.3.0
- maven-project-info-reports-plugin to 3.4.3
- maven-source-plugin to 3.3.0
- maven-surefire-report-plugin to 3.0.0
- org.eclipse.jdt:ecj to 3.34.0
- spring-boot-maven-plugin to 2.7.13
- tycho to 4.0.2
Other changes
- Add target platform for Eclipse 2023-09 (4.29)
- Use release p2 repo for Eclipse 2023-06 (4.28)
- Fix all javadoc warnings, stop ignoring doclint 'missing' category and fail the build on javadoc warnings for public and protected classes and class members.
- Bazel: Fix remote build execution for Java 17
- Remove the cbi-snapshots Maven repository
The project leadership certifies that the APIs in this release are "Eclipse Quality".