Eclipse JGit: Java implementation of Git 7.7.0

7.7.0

Description

Features and Improvements

  • ReceivePack: Add option to retain PackParser's object IDs
  • jgit-256 PullResult: Improve toString by implementing for children.
  • TreeWalkConnectivityChecker: Support non-commit objects in refs
  • [ssh] Reject host certificates if the certified key is revoked
  • Instrument ReceivePack to track time spent in pre-receive hooks
  • Add timing metrics to ReceivedPackStatistics

Improvements for multi pack index support

  • DfsPackCompactor: add a pre-commit hook to plug midx calculation
  • MidxPackList: Add a builder to edit the pack list
  • MidxWriter: Write to tmp files and use atomic rename to commit
  • PackDirectory: Integrate Multi-Pack Index (MIDX) support
  • PackMidx: A Pack subclass that uses midx
  • MultiPackIndex: write midx bitmaps from cli tool
  • MidxWriter: write bitmaps with the midx
  • MultiPackIndexWriter: Encode checksum in base64
  • DfsMidxWriter: Split writing midx and its bitmaps

Performance Improvements

  • pack-refs: Add fully-peeled flag
  • pack-refs: Correctly define peeled trait
  • pack-refs: Always add sorted trait
  • Add new TreeWalkConnectivityChecker, a new TreeWalk-based connectivity checker that avoids object allocations that occur when doing graph coloring via ObjectWalks
  • parse-packed-refs: Check to sort only when header is not present

Bug Fixes

  • 582000 ReceivePack: reject creation of one level refs such as refs/main
  • Implement SystemReader.isAndroid() instead of catching a NoClassDefFoundError in GC.getPID()
  • jgit-261 TemporaryBuffer.LocalFile: use Files.newInputStream()
  • jgit-252 
    • FetchProcess: Report lock failure when destination ref changes
    • TestProtocolTest: Cover additional fetch edge cases
    • Add regression test on non-forced fetch and local updates
  • pack-refs: Fix buggy way of marking peeled trait
  • RefDirectory#refreshPathToLooseRef: also refresh loose ref itself
  • push: Report fatal server errors during pack writing
  • jgit-249 Bump minimum dependency for Bouncy Castle to 1.83.0

Build and Release Engineering

Update dependencies

  • bouncycastle to 1.84
  • bytebuddy to 1.18.8
  • commons-codec to 1.22.0
  • commons-io to 2.22.0
  • commons-logging to 1.3.6
  • gson to 2.14.0
  • Jetty to 12.1.9
  • mockito to 5.23.0
  • orbit: org.apache.ant to 1.10.17.v20260410-1000
  • org.tukaani:xz to 1.12
  • slf4j to 2.0.18

 

  • Bazel: bump to 8.6.0 and switch to pure Bzlmod
  • Add jgit-4.40 target platform for next simrel 2026-06
  • Use releases p2 repo in jgit-4.39 target platform

 

  • Update python used to deploy release to maven central to 3.14
  • Update urllib3 in script for deploying releases to at least 2.7.0 to fix CVE-2026-44432
  • [version.sh] Don't use the pager for the git diff command
  • Update URL used to download artifacts from repo.eclipse.org
  • Update version of last JGit release to 7.6.0.202603022253-r
     
API Certification

The project leadership certifies that the APIs in this release are "Eclipse Quality".

Conforms To UI/UX Guidelines
Not verified