Eclipse EGit: Git Integration for Eclipse 6.0.0

Prerequisites

  • EGit 6.0 requires at least Eclipse 2020-09 (4.17) to install and run
  • EGit 6.0 requires at least Java 11 to run

Features

  • Add a preference to enable or disable using an SSH agent. JGit newly has support for using an SSH agent, and EGit includes this feature. Provide a preference setting through which a user can disable using an SSH agent completely. (The default setting is to use an SSH agent if available, though.) Changing the setting takes effect on the next SSH connection attempt; the setting applies only to connections made by the JGit SSH implementation. The JGit SSH agent support is completely independent from the JSch-based agent settings in Eclipse's SSH2 preferences. Those rely on third-party bundles contributing agent facades via an extension point, the facades have to implement a JSch interface. It is currently not planned to bridge this gap from EGit.
  • 576971 Add a preference for the JGit text buffer size. Add a new setting to the Window Cache preference page where the user can change this "text buffer size". It's the number of bytes that JGit examines to determine whether a file or blob is binary or text, and if text, whether it has CR-LF line endings. The preference can be set to values in the range of 8 to 128KiB. The JGit default is a mere 8kB. Set a larger default of 32KiB.
  • 544815 Add a "Fetch Github Pull Request" command
  • 544815 [fetch pr] Add "Fetch Gitlab Merge Request..." command
  • [fetch pr] Pre-fill the fetch dialog for more web URLs
  • 544815 [fetch pr] User-defined server type mappings
  • [fetch pr] Generalize fetching pull requests

API cleanup

Adapt to JGit API changes

  • RepositoryHandle: adapt to jgit API changes in Repository
  • Adapt to CanceledException change in JGit

Adapt to new minimum Eclipse version 4.17

  • Don't use deprecated AbstractUIPlugin.saveDialogSettings()
  • Remove layout work-around for old SWT on gtk
  • Remove work-around for an old bug on gtk
  • SWT colors don't need to be disposed anymore
  • Don't use deprecated ImageDescriptor.getImageData()
  • Don't use deprecated java.util.Observable
  • Don't use deprecated IProgressMonitorWithBlocking
  • Don't use deprecated FilteredTree constructor
  • Resolve bogus warning about unclosed closeable
  • Remove one work-around for finding the right DocumentProvider
  • Generify remaining getAdapter() methods
  • Remove old icons
  • 576102 Remove references to the CVS feature

Usability Improvements

  • [gerrit fetch] Improve Gerrit fetch regex. Handle quoted URLs, as well as "checkout -b" (ignoring the suggested branch name, though) and "cherry-pick".
  • Improve git URL extraction from clipboard content

Bug Fixes

  • Don't rely on an implicit default character set
  • 576959 [repo view] Ensure the correct commits are compared for Refs
  • 576141 Fix NPE in DiffViewer if newer commit has no parent
  • 576049 Fix NPE in BlameOperation#refreshOnHeadChange

Build and Release Engineering

  • GitCloneWizardTestBase: ignore errors during cleanup
  • TestUtils#deleteTempDirs: don't throw exception when cleanup fails
  • [releng] Remove last remnants of jboss repository-utils maven plug-in
  • Refactor the FetchGerritChangePage
  • [gerrit fetch] Move clipboard handling to command
  • 576296 Update spotbugs configuration
  • 576238 Remove TestUtil.processUIEvents()

Update to Java 11

  • 576238 [releng] Switch to BREE Java 11. Update root pom.xml to use --release 11, and to compile against the egit-4.17 target by default. Update the JDT compiler settings. egit-4.17 corresponds to Eclipse 2020-09, which is the first Eclipse version that required Java 11, and which is EGit's new baseline as of EGit 6.0. In the Oomph setup, use egit-4.18 as default. Eclipse 2020-09 had a critical bug on OS X that shows up in a child Eclipse even on OS X 10.14.6 and that breaks table rendering with custom painting (bug 565969), which breaks the rendering of the EGit history view. Hence developers are encouraged to use a target platform newer than egit-4.17. The CI build will still compile against that platform to ensure that EGit works on its baseline version.
  • 576238 [releng] Update bundle minimum versions to Eclipse 2020-09
  • Set org.eclipse.egit.github.core BREE to Java 1.8 again. This bundle is, despite the name, actually completely independent of JGit or of EGit. It was originally designed to work and be used on Android, though. With a BREE of Java 11 Android compatibility would be lost.
  • 576238 [releng] Drop old target platforms. Remove all target platforms older than 4.17. Remove all unreferenced Orbit TPD files.
  • Update documentation for 6.0
  • Update Orbit to R20211122181901 for 2021-12
  • Add 4.22 target platform for 2021-12
  • Add org.bouncycastle.bcutil to p2 repository
  • [oomph] Add 4.20 and 4.21 target platforms

Build

  • Require maven 3.6.3.
  • Remove pack200 archives.
  • Update tycho version to 2.5.0
  • Update maven-pmd-plugin to 3.15.0
  • Update spotbugs to 4.4.1
  • Update jarsigner to 1.3.2
  • [releng] Eliminate JBoss repository-utils

Update dependencies

  • 571932576100 Jetty to 10.0.6
  • com.google.gson to 2.8.8.v20211029-0838
  • com.googlecode.javaewah to 1.1.13.v20211029-0839
  • net.i2p.crypto.eddsa to 0.3.0.v20210923-1401
  • org.apache.ant to 1.10.12.v20211102-1452
  • org.apache.commons.compress to 1.21.0.v20211103-2100
  • org.bouncycastle.bcprov to 1.69.0.v20210923-1401
  • org.junit to 4.13.2.v20211018-1956
  • Include JNA in the target platform
Release Date
Release Type
Major release (API breakage)
This release is part of Eclipse IDE 2021-12