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"

(Initial content for JGit. Still need the two lists of fixed issues with milestone 5.2.0.)
(11 intermediate revisions by 2 users not shown)
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-keygen -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.
 +
 
 +
:Known bugs:
 +
:* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=542845 Bug 542845]: after having added a new private key in ''Preferences&rarr;Global&rarr;Network Connections&rarr;SSH2'', restart Eclipse to have the new Apache MINA sshd library pick it up. This will be fixed in EGit 5.3.0 so that a restart is not needed anymore.
  
 
== Parallel Pull Operations ==
 
== Parallel Pull Operations ==
Line 29: Line 32:
 
== Multi-Repository Branch Switch ==
 
== Multi-Repository Branch Switch ==
  
In the Git Repositories view you can now switch to a common branch in several repositories at once.
+
You can now switch to a common branch in several repositories at once.
  
 
[[Image:Multi_Branch_Switch_5.2.png|frame|none|alt=Screenshot of the Git Repositories view with the context menu visible and "Switch Repositories To" selected]]
 
[[Image:Multi_Branch_Switch_5.2.png|frame|none|alt=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.
 
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.
 +
 +
This branch switch in several repositories works not only in the Git Repositories view as shown in the screenshot above but also in the Package Explorer or Project Explorer when resources from several repositories are selected.
 
   
 
   
 
== Gitflow Configuration ==
 
== Gitflow Configuration ==
Line 43: Line 48:
 
== Other Changes ==
 
== Other Changes ==
  
There were 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.
+
EGit 5.2.0 includes lots of 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. Find the complete list of new features and bug fixes in the [https://projects.eclipse.org/projects/technology.egit/releases/5.2.0/ release notes].
  
<TBD: add list of fixed issues with milestone 5.2.0>
+
= Contributors =
  
= JGit =
+
The following 10 developers worked on this release:
 
+
== New SSH Bundle ==
+
 
+
There is a new bundle <code>org.eclipse.jgit.ssh.apache</code> that implements a new SSH session factory based on [https://mina.apache.org/sshd-project/ Apache MINA sshd]. It's available as maven artifact <code>org.eclipse.jgit:org.eclipse.jgit.ssh.apache:5.2.0</code>.
+
 
+
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 <code>org.eclipse.jgit.ssh.apache.SshdSessionFactory</code>. Example usages can be found in JGit in <code>org.eclipse.jgit.pgm.TextBuiltin.execute()</code> and in EGit <code>org.eclipse.egit.core.Activator.setupSSH()</code>.
+
 
+
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 <code>org.eclipse.jgit</code> 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:
+
<dl>
+
<dt>--ssh (jsch|apache)</dt>
+
<dd>Selects the SSH library. <code>jsch</code> is the default and makes the commands use the old JSch library. <code>apache</code> selects the new Apache MINA sshd implementation.</dd>
+
</dl>
+
 
+
== Other Changes ==
+
  
<TBD: add list of fixed issues with milestone 5.2.0>
+
Andrey Loskutov, Gunnar Wagenknecht, Jonas Hungershausen, Karsten Thoms, Luís Copetti, Markus Duft, Matthias Sohn, Max Hohenegger, Michael Keppler, and Thomas Wolf.

Revision as of 10:22, 17 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-keygen -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.

Known bugs:
  • Bug 542845: after having added a new private key in Preferences→Global→Network Connections→SSH2, restart Eclipse to have the new Apache MINA sshd library pick it up. This will be fixed in EGit 5.3.0 so that a restart is not needed anymore.

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

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.

This branch switch in several repositories works not only in the Git Repositories view as shown in the screenshot above but also in the Package Explorer or Project Explorer when resources from several repositories are selected.

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 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. Find the complete list of new features and bug fixes in the release notes.

Contributors

The following 10 developers worked on this release:

Andrey Loskutov, Gunnar Wagenknecht, Jonas Hungershausen, Karsten Thoms, Luís Copetti, Markus Duft, Matthias Sohn, Max Hohenegger, Michael Keppler, and Thomas Wolf.

Back to the top