Eclipse JGit: Java implementation of Git 5.8.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

5.8.0

Description

Features

  • Add getter for unpackErrorHandler in ReceivePack
  • 437855, 550529: Add Git.shutdown method for releasing resources held by JGit process
  • 548763 GPG: don't prompt for a passphrase for unprotected keys
  • 553625 Decouple code depending on JSch ssh client from JGit Core
  • 559106 Decouple code depending on BouncyCastle from JGit Core
  • Builder API to configure SshdSessionFactories
  • 553206 Include full IssuerFingerprint in GPG signature
  • lfs server using object storage: Allow for using custom s3 host with lfs server.

    This will allow for storing lfs objects e.g. using minio or on-prem.
  • revwalk: Introduce bitmap-based object reachability checker
  • Enable passing java options to jgit command line executable by setting the environment variable "java_args", e.g. $ java_args="-Xmx8g" jgit log
  • 561021 Allow explicitly setting the tag option for the remote configuration when cloning a repository.
  • 560936 TransportHttp: support HTTP response 308 Permanent Redirect

Performance

  • 563740 WindowCache: conditional JMX setup
  • PackBitmapIndex: Reduce memory usage in GC
  • PackBitmapIndex: Add AddToBitmapWithCacheFilter which updates a client-provided {@code BitmapBuilder} as a side effect of a revwalk. It short circuits the walk when it encounters a commit which is included in the provided bitmap's BitmapIndex or if it encounters the client-provided cached commit.
  • ReceivePack: Introduce IterativeConnectivityChecker which runs a connectivity check with a filtered set of references, and falls back to using the full set of advertised references. We tested it inside Google and it improves connectivity for certain topologies and can speed up push.
  • ApplyCommand: use Files#copy to copy file to improve performance
  • UploadPack: Use more relevant refs first in object reachability check
  • UploadPack: Clear advertised ref map after negotiation when it is no longer used to reduce heap usage

Bug Fixes

  • 562348 ApplyCommand: use context lines to determine hunk location
  • ObjectDirectory: Explicitly handle NoSuchFileException
  • ObjectDirectory: Fail immediately when atomic move is not supported
  • 514326 Do not include log4j implementation in jgit
  • 563739 Verify that the user home directory is valid
  • 563570 RawTextComparator.WS_IGNORE_CHANGE must not compare whitespace
  • 563138 TransportHttp: abort on time-out or on SocketException
  • 561877 Ignore core.eol if core.autocrlf=input
  • 561341 Attributes: fix handling of text=auto in combination with eol to the new interpretation of gitattributes since git 2.10
  • 563022 Fix downloading LFS Object fails behind proxy
  • Fix NPE occurring when calling CheckoutCommand with forced == true option when the branch isn't changed and there is deleted uncommitted file.
  • When applying a patch that contains renames or copies using ApplyCommand, also apply all hunks that apply to the renamed or copied file.
  • Create parent directories when renaming a file in ApplyCommand
  • 560903 Fix human name for local .bundle files
  • Scan through all merged reftables for max/min update indices since reftables might have update index ranges that are overlapped.
  • 408846 FileUtils: improve delete (Windows) by ensuring files are writable before trying to delete them.
  • 561666 FS.runInShell(): handle quoted filters and hooksPath containing blanks
  • 499934 Fix javadoc typo
  • ReceivePack: Use error message if set in ReceiveCommand can have an error message.
  • 561438 Handle non-normalized index also for executable files
  • ResolveMerger: Ignore merge conflicts if asked so. The recursive merge strategy builds a virtual ancestor merging recursively the common bases (when more than one) between the  want-to-merge commits. While building this virtual ancestor, content conflicts are ignored, but current code doesn't do so when a file is removed.
  • RevWalk: fix bad topo flags error message

Build and Release Engineering

  • Update Bazel version to 3.1.0
  • Upgrade build-helper-maven-plugin to 3.1.0
  • Upgrade ecj to 3.21.0
  • Upgrade maven-antrun-plugin to 3.0.0
  • Upgrade maven-dependency-plugin to 3.1.2
  • Upgrade maven-javadoc-plugin to 3.2.0
  • Upgrade maven-project-info-reports-plugin to 3.1.0
  • Upgrade maven-shade-plugin to 3.2.4
  • Upgrade maven-site-plugin to 3.9.0
  • Upgrade spotbugs-maven-plugin to 4.0.0
  • Upgrade Tycho to 1.7.0
  • Upgrade wagon-ssh to 3.4.0
  • Update Ant to 1.10.8
  • Update Bouncy Castle to 1.65 (bcprov to 1.65.1)
  • Update jetty to 9.4.28.v20200408
  • 561078 Update org.apache.sshd to 2.4.0
  • Update Orbit to R20200529191137 for final Eclipse release 2020-06
  • Add 4.16 staging target platform
  • Set baseline for japicmp to 5.7.0.202003110725-r
  • Add benchmark for strategies how to move a file
  • ObjectDirectory: clean up insertUnpackedObject and improve logging
  • In-memory SSH keys for the "no files" sshd tests
  • 563380 Log stack trace if CachingKeyPairProvider hits unexpected exception
  • Always use https to access download.eclipse.org
  • 562274 Bazel: Disable SecurityManagerMissingPermissionsTest test
  • Document gc and pack relevant options
  • Define constants for pack config option keys

     
API Certification

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

Conforms To UI/UX Guidelines
Not verified
This release is part of Eclipse IDE 2020-06