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

6.10.0

Description

New Features

  • Allow applying a patch with conflicts
  • DfsPackFile: get commitGraph.readChangePaths from repo config
  • [ssh] Implement the "Ciphers" SSH config

Other Improvements

  • PackIndex: Make it an interface
  • PackIndex: Make iterator static (pass object count in ctor)
  • PackIndex: move checksum to the subclasses
  • PackIndex: Make #getOffset protected to allow out-of-package subclasses
  • PackBitmapIndexBuilder.StoredEntry: add getter for objectId
  • PackBitmapIndexBuilder: make StoredEntry constructor public
  • PackBitmapIndexBuilder: allow repeated call of getCompressedBitmaps()
  • DfsPackFile: Make the loader classes used to construct bitmaps public.
  • DfsPackFile: make public the constructor with bitmap loader
  • PackWriter: writeBitmapIndex takes bitmap index writer
  • PackBitmapIndex: convert from class to interface
  • PackBitmapIndex: hide packChecksum behind getter
  • PathFilterGroup: implement getPathsBestEffort()
  • CommitGraphLoader: receive readChangedPaths as parameter
  • DfsBlockCache: move cache table specific implementations to a new class

Performance improvements

  • Cache refreshed loose ref dirs in SnapshottingRefDirectory

Bug fixes

  • [gpg] Fix finding public keys from pubring.gpg
  • Check executable bit of file by reading it from the file system instead of checking if Java can execute it.
  • egit-16 FS_POSIX.runInShell(): on MacOS use a login shell
  • jgit-14 ResolveMerger: Fix issue with binary modify-modify conflicts
  • jgit-27 [gpg] Fix reading ed25519 GPG keys
  • jgit-34 [diffmergetool] Fix running command on Cygwin
  • jgit-36 CleanupService: preload JGitText if not running in OSGi
  • jgit-36 ShutdownHook: run on bundle deactivation if in OSGi
  • jgit-38 MergeAlgorithm: Fix diff3 conflict hunk computation
  • jgit-53 sshd: fix IdentiesOnly if SSH agent is enabled and has keys
  • TreeRevFilter: correct changedPathFilter usage for multi-paths inclusion

Build and Release Engineering

Update build dependencies

  • build-helper-maven-plugin to 3.6.0
  • cyclonedx-maven-plugin to 2.8.0
  • git-commit-id-maven-plugin to 8.0.2
  • groovy to 4.0.21
  • jacoco-maven-plugin to 0.8.12
  • japicmp-maven-plugin to 0.21.2
  • maven-artifact-plugin to 3.5.1
  • maven-compiler-plugin to 3.13.0
  • maven-deploy-plugin to 3.1.2
  • maven-install-plugin to 3.1.2
  • maven-jar-plugin to 3.4.1
  • maven-pmd-plugin to 3.22.0
  • maven-shade-plugin to 3.5.3
  • maven-site-plugin to 4.0.0-M14
  • maven-source-plugin to 3.3.1
  • org.eclipse.jdt:ecj to 3.37.0
  • spotbugs-maven-plugin to 4.8.5.0
  • spring-boot-maven-plugin to 2.7.18
  • tycho to 4.0.7 and set minimum maven version to 3.9.0

Update dependencies

  • add commons-lang3 as a transitive dependency of commons-compress
  • Apache commons-codec to 1.17.0
  • Apache commons-io to 2.16.1
  • Apache commons-logging to 1.3.2
  • args4j to 2.37
  • Bouncy Castle to 1.78.1
  • com.google.code.gson:gson to 2.11.0
  • jetty to 10.0.21
  • mina-sshd to 2.12.1
  • org.apache.commons:commons-compress to 1.26.2

Update test dependencies

  • bytebuddy to 1.14.16
  • mockito to 5.12.0
  • objenesis to 3.4
  • org.assertj:assertj-core to 3.26.0

Update target platforms

  • add 4.32 target platform
  • add orbit-4.32

Bazel build

  •  add support for JDK 21
       To build with JDK 21 and run the tests locally:
         $> bazel test --config=java21 //...
       To build with JDK 21 and run the tests on RBE:
         $> bazel test --config=remote21 --remote_instance_name=$PROJECT //...
  • replace deprecated --experimental_strict_action_env option
  • update RBE docker image to Ubuntu 22.04 and JDK 17
  • update Bazel version to 7.1.1

Fix warnings

  • UploadPackHandleDeletedPackFileTest: Fix warning about using raw type
  • [errorprone] Fix pattern ModifiedButNotUsed
  • [errorprone] Fix pattern CatchAndPrintStackTrace
  • [errorprone] Fix pattern FutureReturnValueIgnored
  • [errorprone] Fix pattern BadImport
  • [errorprone] Fix pattern UseCorrectAssertInTests
  • [errorprone] Fix pattern ProtectedMembersInFinalClass
  • [errorprone] Fix pattern CatchFail
  • [errorprone] Fix pattern see UnusedVariable
  • [errorprone] Fix pattern LongLiteralLowerCaseSuffix
  • [errorprone] Fix error pattern JdkObsolete
  • [errorprone] Fix UnnecessaryParentheses errors

Tests

  • Add more tests on rewriting parents in a RevWalk
  • DfsGarbageCollectorTest: add test for bitmap index creation

Documentation

  • Add pull request template discouraging usage of pull requests
  • Update CONTRIBUTING.md to point to GitHub issues
     
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 2024-06

New Features

  • Allow applying a patch with conflicts
  • DfsPackFile: get commitGraph.readChangePaths from repo config
  • [ssh] Implement the "Ciphers" SSH config

Other Improvements

  • PackIndex: Make it an interface
  • PackIndex: Make iterator static (pass object count in ctor)
  • PackIndex: move checksum to the subclasses
  • PackIndex: Make #getOffset protected to allow out-of-package subclasses
  • PackBitmapIndexBuilder.StoredEntry: add getter for objectId
  • PackBitmapIndexBuilder: make StoredEntry constructor public
  • PackBitmapIndexBuilder: allow repeated call of getCompressedBitmaps()
  • DfsPackFile: Make the loader classes used to construct bitmaps public.
  • DfsPackFile: make public the constructor with bitmap loader
  • PackWriter: writeBitmapIndex takes bitmap index writer
  • PackBitmapIndex: convert from class to interface
  • PackBitmapIndex: hide packChecksum behind getter
  • PathFilterGroup: implement getPathsBestEffort()
  • CommitGraphLoader: receive readChangedPaths as parameter
  • DfsBlockCache: move cache table specific implementations to a new class

Performance improvements

  • Cache refreshed loose ref dirs in SnapshottingRefDirectory

Bug fixes

  • [gpg] Fix finding public keys from pubring.gpg
  • Check executable bit of file by reading it from the file system instead of checking if Java can execute it.
  • egit-16 FS_POSIX.runInShell(): on MacOS use a login shell
  • jgit-14 ResolveMerger: Fix issue with binary modify-modify conflicts
  • jgit-27 [gpg] Fix reading ed25519 GPG keys
  • jgit-34 [diffmergetool] Fix running command on Cygwin
  • jgit-36 CleanupService: preload JGitText if not running in OSGi
  • jgit-36 ShutdownHook: run on bundle deactivation if in OSGi
  • jgit-38 MergeAlgorithm: Fix diff3 conflict hunk computation
  • jgit-53 sshd: fix IdentiesOnly if SSH agent is enabled and has keys
  • TreeRevFilter: correct changedPathFilter usage for multi-paths inclusion

Build and Release Engineering

Update build dependencies

  • build-helper-maven-plugin to 3.6.0
  • cyclonedx-maven-plugin to 2.8.0
  • git-commit-id-maven-plugin to 8.0.2
  • groovy to 4.0.21
  • jacoco-maven-plugin to 0.8.12
  • japicmp-maven-plugin to 0.21.2
  • maven-artifact-plugin to 3.5.1
  • maven-compiler-plugin to 3.13.0
  • maven-deploy-plugin to 3.1.2
  • maven-install-plugin to 3.1.2
  • maven-jar-plugin to 3.4.1
  • maven-pmd-plugin to 3.22.0
  • maven-shade-plugin to 3.5.3
  • maven-site-plugin to 4.0.0-M14
  • maven-source-plugin to 3.3.1
  • org.eclipse.jdt:ecj to 3.37.0
  • spotbugs-maven-plugin to 4.8.5.0
  • spring-boot-maven-plugin to 2.7.18
  • tycho to 4.0.7 and set minimum maven version to 3.9.0

Update dependencies

  • add commons-lang3 as a transitive dependency of commons-compress
  • Apache commons-codec to 1.17.0
  • Apache commons-io to 2.16.1
  • Apache commons-logging to 1.3.2
  • args4j to 2.37
  • Bouncy Castle to 1.78.1
  • com.google.code.gson:gson to 2.11.0
  • jetty to 10.0.21
  • mina-sshd to 2.12.1
  • org.apache.commons:commons-compress to 1.26.2

Update test dependencies

  • bytebuddy to 1.14.16
  • mockito to 5.12.0
  • objenesis to 3.4
  • org.assertj:assertj-core to 3.26.0

Update target platforms

  • add 4.32 target platform
  • add orbit-4.32

Bazel build

  •  add support for JDK 21
       To build with JDK 21 and run the tests locally:
         $> bazel test --config=java21 //...
       To build with JDK 21 and run the tests on RBE:
         $> bazel test --config=remote21 --remote_instance_name=$PROJECT //...
  • replace deprecated --experimental_strict_action_env option
  • update RBE docker image to Ubuntu 22.04 and JDK 17
  • update Bazel version to 7.1.1

Fix warnings

  • UploadPackHandleDeletedPackFileTest: Fix warning about using raw type
  • [errorprone] Fix pattern ModifiedButNotUsed
  • [errorprone] Fix pattern CatchAndPrintStackTrace
  • [errorprone] Fix pattern FutureReturnValueIgnored
  • [errorprone] Fix pattern BadImport
  • [errorprone] Fix pattern UseCorrectAssertInTests
  • [errorprone] Fix pattern ProtectedMembersInFinalClass
  • [errorprone] Fix pattern CatchFail
  • [errorprone] Fix pattern see UnusedVariable
  • [errorprone] Fix pattern LongLiteralLowerCaseSuffix
  • [errorprone] Fix error pattern JdkObsolete
  • [errorprone] Fix UnnecessaryParentheses errors

Tests

  • Add more tests on rewriting parents in a RevWalk
  • DfsGarbageCollectorTest: add test for bitmap index creation

Documentation

  • Add pull request template discouraging usage of pull requests
  • Update CONTRIBUTING.md to point to GitHub issues