Eclipse JGit: Java implementation of Git 6.9.0

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

     
Release Date
Release Type
Minor release
This release is part of Eclipse IDE 2024-03