Eclipse JGit: Java implementation of Git 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
Release Date
Release Type
Minor release
This release is part of Eclipse IDE 2023-09