Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EGit/New and Noteworthy/5.2"

m
Line 10: Line 10:
 
EGit 5.2.0 newly includes an SSH client based on the [https://mina.apache.org/sshd-project/ Apache MINA sshd] library. Until now, EGit used an older library called JSch for its built-in SSH handling.
 
EGit 5.2.0 newly includes an SSH client based on the [https://mina.apache.org/sshd-project/ Apache MINA sshd] library. Until now, EGit used an older library called JSch for its built-in SSH handling.
  
You can choose which library to use in the main EGit preferences page, and we encourage you to switch to the new Apache MINA sshd. Benefits for now are that more kinds of SSH keys work: ECDSA-384 and ECDSA-521 keys work, and '''ed25519 keys''' now also work! It also properly reads private key files generated by modern OpenSSH (or older OpenSSH <code>ssh -o</code>).
+
You can choose which library to use in the main EGit preferences page, and we encourage you to switch to the new Apache MINA sshd. Benefits for now are that more kinds of SSH keys work: ECDSA-384 and ECDSA-521 keys work, and '''ed25519 keys''' now also work! It also properly reads private key files generated by modern OpenSSH (or older OpenSSH <code>ssh -o</code>), if they are not password-protected. ''Encrypted new-style OpenSSH private keys are not supported by Apache MINA sshd yet.'' Keys in the older PEM format are read fine.
  
 
* Supported authentication mechanisms: gssapi-with-mic, publickey, password, keyboard-interactive.
 
* Supported authentication mechanisms: gssapi-with-mic, publickey, password, keyboard-interactive.
* Supported private keys: DSA, RSA, ECDSA (256, 384, and 521 bits), ed25519. ''(Encrypted ed25519 OpenSSH private keys are not supported by Apache MINA sshd yet.)''
+
* Supported private keys: DSA, RSA, ECDSA (256, 384, and 521 bits), ed25519.  
 
* Supported proxy types: SOCKS5 and HTTP, with anonymous access or GSSAPI or username-password (Basic) authentication.
 
* Supported proxy types: SOCKS5 and HTTP, with anonymous access or GSSAPI or username-password (Basic) authentication.
  
Line 21: Line 21:
 
The previously existing mechanism for using an external SSH executable by setting the <code>GIT_SSH</code> environment variable is still available.
 
The previously existing mechanism for using an external SSH executable by setting the <code>GIT_SSH</code> environment variable is still available.
  
Support for reading ''encrypted'' ed25519 OpenSSH keys is on the roadmap for the next EGit 5.3.0 release. We plan to remove the old JSch SSH implementation completely in a future release of EGit.
+
Support for reading ''encrypted'' OpenSSH keys is on the roadmap for the next EGit 5.3.0 release. We plan to remove the old JSch SSH implementation completely in a future release of EGit.
  
 
== Parallel Pull Operations ==
 
== Parallel Pull Operations ==

Revision as of 13:28, 1 December 2018

EGit

New Preferences

The main EGit preference page has two new preferences: one for enabling parallel pull and one for selecting the SSH client library to use.

Screenshot of the Egit preference page with the two new preferences highlighted

New SSH Library

EGit 5.2.0 newly includes an SSH client based on the Apache MINA sshd library. Until now, EGit used an older library called JSch for its built-in SSH handling.

You can choose which library to use in the main EGit preferences page, and we encourage you to switch to the new Apache MINA sshd. Benefits for now are that more kinds of SSH keys work: ECDSA-384 and ECDSA-521 keys work, and ed25519 keys now also work! It also properly reads private key files generated by modern OpenSSH (or older OpenSSH ssh -o), if they are not password-protected. Encrypted new-style OpenSSH private keys are not supported by Apache MINA sshd yet. Keys in the older PEM format are read fine.

  • Supported authentication mechanisms: gssapi-with-mic, publickey, password, keyboard-interactive.
  • Supported private keys: DSA, RSA, ECDSA (256, 384, and 521 bits), ed25519.
  • Supported proxy types: SOCKS5 and HTTP, with anonymous access or GSSAPI or username-password (Basic) authentication.


There is no support yet for ssh-agent or for Pageant with the new SSH library.

The previously existing mechanism for using an external SSH executable by setting the GIT_SSH environment variable is still available.

Support for reading encrypted OpenSSH keys is on the roadmap for the next EGit 5.3.0 release. We plan to remove the old JSch SSH implementation completely in a future release of EGit.

Parallel Pull Operations

On the main EGit preference page, you can define how many parallel pull operations EGit should do when you pull from several repositories. Setting the value to "1" disables parallel pulls, and EGit will pull one repository after another. A larger value will make EGit run pull operations on different repositories in parallel.

Multi-Repository Branch Switch

In the Git Repositories view you can now switch to a common branch in several repositories at once.

Screenshot of the Git Repositories view with the context menu visible and "Switch Repositories To" selected

When there are several repositories selected, the context menu entry "Switch Repositories To" allows you to do a branch switch in all of them. The sub-menu proposes the local branches that have the same name in all of the selected repositories. When you select a branch, EGit checks out that branch in all those repositories. If some check-outs cannot be done successfully, for instance because of conflicts in some repositories, a dialog will be presented showing which repositories were switched and which ones not.

Gitflow Configuration

We've started implementing support for the git config settings used by command-line gitflow tools. This work has just begun; EGit 5.2.0 supports only one config entry:

  • gitflow.feature.start.fetch — if true, fetch from upstream before starting a new feature branch.

Other Changes

EGit 5.2.0 includes lots of minor (or at least less noticeable) improvements in the UI, such as icons for menu items, using verbs instead of "OK" for dialog buttons, and so on, plus a number of bug fixes. See the following list.

<TBD: add list of fixed issues with milestone 5.2.0>

JGit

New SSH Bundle

There is a new bundle org.eclipse.jgit.ssh.apache that implements a new SSH session factory based on Apache MINA sshd. It's available as maven artifact org.eclipse.jgit:org.eclipse.jgit.ssh.apache:5.2.0.

The default SSH session factory used for fetching and pushing with git via SSH is still based on the JSch 0.1.54 library. To use the new implementation based on Apache MINA sshd, include the new artifact in your dependencies, and install a new org.eclipse.jgit.ssh.apache.SshdSessionFactory. Example usages can be found in JGit in org.eclipse.jgit.pgm.TextBuiltin.execute() and in EGit org.eclipse.egit.core.Activator.setupSSH().

The bundle requires Apache MINA sshd 2.0.0. Because the upstream interfaces of sshd change in later versions it will not work with sshd versions >= 2.1.0. We plan to move to sshd 2.2.0 once that is released; hopefully in time for the next JGit release 5.3.0.

Using this new bundle is completely optional; the core JGit org.eclipse.jgit bundle has no dependencies on it.

New Command-Line Option

The JGit command-line tools have a new command-line option to select the SSH library to use:

--ssh (jsch|apache)
Selects the SSH library. jsch is the default and makes the commands use the old JSch library. apache selects the new Apache MINA sshd implementation.

Other Changes

<TBD: add list of fixed issues with milestone 5.2.0>

Back to the top