Eclipse JGit: Java implementation of Git 4.0.0

Primary tabs

Update to Java 7

  • Update minimum required Java version from Java 5 to Java 7
  • Remove bundles org.eclipse.jgit.console and org.eclipse.jgit.java7 which are no longer needed due to update to Java 7
  • Implement AutoClosable and use it to ensure resource held by JGit get released when they are no longer needed

API cleanup

  • Replace release() methods by close() to support AutoClosable
  • Delete some deprecated classes and methods, details are available in Clirr API change report
  • ObjectReader: remove the walkAdvice API


  • Remove the gitprefix logic and rework detecting Git system config file
  • Allow to manually set the path to the Git system config file
  • Add fsck.allowInvalidPersonIdent to accept invalid author/committers


  • Add support for quiet capability to ReceivePack
  • Support agent= capability in wire protocol


  • Support for the commit-msg hook

Misc. Enhancements

  • Allow ObjectWalk to be filtered by an arbitrary predicate
  • Use ANY_DIFF filter in ResolveMerger for bare repositories
  • ObjectWalk: make setRetainBody(false) the default
  • Make MyersDiff interruptible
  • Support --untracked-files in command line status command
  • Support "--long" option in DescribeCommand and command line describe command
  • Make s3 domain dynamic to support different s3 regions in AmazonS3 transport
  • Allow public access to PackIndex
  • Enhance ArchiveCommand to allow passing options to underlying stream

Introduce logging

  • Use slf4j API to enable logging in JGit
  • Use log4j-slf4j to log from org.eclipse.jgit.pgm

Performance Improvements

  • Optimize EolAwareOutputStream for bulk output
  • Buffer TemporaryBuffer's overflow output stream used by ResolveMerger to improve performance
  • RevWalk: Discard uninteresting commits unless RevSort.BOUNDARY


  • Fix that exceptions in ReceivePack cause Invalid Channel 101 exceptions
  • Don't invalidate pack file on InterruptedIOException
  • Fix RecursiveMerger in case of multiple, independent base commits
  • Fix many warnings
  • Fix several memory leaks

Build and release engineering

  • Update build to use eclipse-jarsigner-plugin 1.1.2
  • Update build to use Tycho 0.23.0
  • Update all standard maven plugins to latest versions
  • Update to Jetty 9.2.10
  • Update to javax.servlet 3.1
  • Added more reports to Maven site
Release Date: 
Wednesday, June 24, 2015
This release is part of Mars.
Release Type: 
Major release (API breakage)