Java implementation of Git 4.2

Primary tabs

API

  • Add RemoteAddCommand
  • Add RemoteListCommand
  • Add RemoteRemoveCommand
  • Add option to allow empty commits to CommitCommand

Configuration

  • Honor some git-core fsck.* configuration settings

JGit command line

  • RepoCommand: Add setRecordRemoteBranch option to record upstream branch

  • git rev-parse: Add --verify option

  • Add remote command to JGit command line

  • Reset command support for the -- <paths> parameters

  • Improved online help

Transport

  • Support more encryption algorithms for Amazon S3 storage of git repositories

  • Support atomic push in JGit client

Git attribute support

  • Basic support for .gitattribute handling

Support git-lfs extension

  • Add support for pre-push hooks

  • Add support for smudge filters. If defined in .gitattributes call smudge filter during checkout.
  • Add support for clean filters. If defined in .gitattributes call clean filter during add to index.

These enhancements enable JGit and EGit to support the git-lfs extension [1] for versioning of large files

[1] https://git-lfs.github.com/

Performance Improvements

  • Improve performance of DirCacheBuilder
  • Speed-up creation of DirCacheEntry
  • Speed-up garbage collection by improving generation of bitmap index
  • Speed-up delta-packing
  • Improve bitmap index calculation to speed-up reachability calculations done during transport

Release Engineering and Build

  • Use japicmp [1] instead of clirr to detect API changes since clirr doesn't support Java 8
  • Use @Nullable annotations to aid detection of NPEs at design time
  • Alternative buck build, much faster than Maven, can't build OSGi artefacts yet

[1] https://github.com/siom79/japicmp

Release Date: 
Wednesday, January 20, 2016
Release Type: 
Minor release