JGit

New Bundles

The core bundle org.eclipse.jgit has been refactored to move some dependencies into optional extra bundles:

SSH

For SSH, this means an application using JGit can now include only exactly what it needs:

As before, it's also possible to use an external SSH application by setting the environment variable GIT_SSH to contain the path to an SSH executable. If neither bundle is included in the application that's the only built-in support for git SSH connections.

It is also possible to include both bundles and use one or the other for different SSH connections.

GPG

For GPG signing of Commits, an application not using this feature no longer needs to contain the fairly large Bouncy Castle libraries. If the application does use this feature, then it needs to include bundle org.eclipse.jgit.gpg.bc and the Bouncy Castle libraries, or provide its own implementation of org.eclipse.jgit.lib.GpgSigner. If bundle org.eclipse.jgit.gpg.bc is present, the implementation from this bundle will be taken as default for the org.eclipse.jgit.lib.GpgSigner.

GPG signing is used if:

If GPG-signing a commit is requested but no GpgSigner is installed, an org.eclipse.jgit.api.errors.ServiceUnavailableException will be thrown.

Dependencies

Other Changes

The complete list of new features and bug fixes is available in the release notes.