Eclipse JGit: Java implementation of Git 4.0.0 Release Review

Type
Release
State
Successful
End Date of the Review Period

Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.

Release

4.0.0

Description

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

Configuration

  • 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

Protocol

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

Hooks

  • 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

Fixes

  • 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

 

API Certification

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

This release is part of Mars