Eclipse JGit: Java implementation of Git 6.6.0

Features

  • UploadPack: Record negotiation statistics on fetchV2 call
  • Add TransportHttp#getAdditionalHeaders to allow getting additional HTTP headers set on the transport.
  • 581832 Support rebasing independent branches
  • 581832 Support cherry-picking a root commit
  • 494323 AddCommand: ability to switch off renormalization
  • Add a "renormalize" option to AddCommand. To maintain compatibility with existing uses, this option is "true" by default, and the behavior of AddCommand is as it has always been in JGit.
  • [pgm] Add the "--renormalize" option to the Add command in the JGit command line program. For the command-line program, the default is as in C git: renormalize is off by default and enabled only if the option is given.
  • Add protocol configuration to Amazon S3 transport http (default) or https
  • [pgm] Implement git tag --contains option
  • ListTagCommand: implement git tag --contains
  • Implement a snapshotting RefDirectory for use in request scoped ref cache
  • BasePackFetchConnection: support negotiationTip feature
  • 581723 DirCache: support option index.skipHash

Performance Improvements

  • PackWriter: write the PackReverseIndex file
  • PackReverseIndexWriter: write out reverse index file. The reverse index for a pack is used to quickly find an object's position in the pack's forward index based on that object's pack offset. Cgit persists a pack reverse index file to avoid recomputing the reverse index ordering every time that it is needed. Introduce these reverse index files to JGit.
  • IntList: add #sort using quick sort for O(n log n) runtime.
  • RevWalk: use commit-graph generation number to speedup getMergedInto()

Bug Fixes

  • GraphObjectIndex: fix search in findGraphPosition
  • Also add suppressed exception if unchecked exception occurs in finally
  • Fix inProcessPackedRefsLock not shared with copies of the instance to reduce lock contention at the file system level.
  • Parse pull.rebase=preserve as alias for pull.rebase=merges to ensure backwards compatibility to the old config value which was removed in git 2.34 which JGit followed in Ic07ff954e2.
  • UploadPack: Fix NPE when traversing a tag chain
  • Prevent infinite loop which might occur when rescanning the pack list on PackMismatchException
  • PackedBatchRefUpdate: If packing loose refs fails due to a lock failure, reject update with a LOCK_FAILURE.
  • PatchApplier: Check for existence of src/dest files before any operation
  • Revert "RefDirectory: Throw exception if CAS of packed ref list fails" to prevent races
  • RefDirectory.delete: Prevent failures when packed-refs is outdated
  • RefDirectory.pack: Only rely on packed refs from disk to prevent races
  • 581641 PackedBatchRefUpdate: Ensure updates are applied on latest packed refs to prevent races causing lost Ref updates
  • Fix PatchApplier error handling.
  • Ensure parsed RevCommitCG has derived data from commit-graph
  • Ensure FileCommitGraph scans commit-graph file if it already exists

Build and Release Engineering

Target platform

  • Update to Orbit S20230516204213
  • Add 4.27 (2023-03) and 4.28 (2023-06) target platforms

Build updates

  • Tycho to 4.0.0-SNAPSHOT
  • japicmp-maven-plugin to 0.17.2
  • spotbugs-maven-plugin to 4.7.3.4
  • dash license-tool-plugin to 1.0.2
  • maven-clean-plugin to 3.2.0
  • maven-compiler-plugin to 3.11.0
  • maven-deploy-plugin to 3.1.1
  • maven-enforcer-plugin to 3.3.0
  • maven-javadoc-plugin to 3.5.0
  • maven-project-info-reports-plugin to 3.4.3
  • maven-resources-plugin to 3.3.1
  • maven-surefire-plugin to 3.0.0
  • maven-surefire-report-plugin to 3.0.0
  • build-helper-maven-plugin to 3.3.0
  • jacoco-maven-plugin to 0.8.10
  • spring-boot-maven-plugin to 2.7.11
  • plexus-compiler to 2.13.0
  • org.eclipse.jdt:ecj to 3.33.0

The Maven build now requires to run on Java 17 or higher (required by Tycho 4)

PGP sign p2 artefacts for 3rd party dependencies consumed directly from Maven Central

Dependency updates

  • Apache commons-codec to 1.15
  • Apache commons-compress to 1.23.0
  • 581770 Apache mina-sshd to 2.10.0
  • assertj-core to 3.24.2
  • 581767 bouncycastle to 1.73
  • jna to 5.13.0
  • jakarta.servlet:jakarta.servlet-api to 4.0.4
  • javaEWAH to 1.2.3
  • jetty to 10.0.15
  • slf4j to 1.7.36
Release Date
Release Type
Minor release
This release is part of Eclipse IDE 2023-06