# EGit

## Features

- Built-in EGit integration for LFS
  - Register builtin LFS on startup. When EGit starts and the lfs bundle (org.eclipse.jgit.lfs) is available register the LFS implementation and check configuration.
  - Allow install (enablement) of LFS support in Preferences (global) and on the repository (local).
  - Apply smudge/clean filters where applicable and required.
  - LFS integration using built-in JGit lfs filters fully works when using Gerrit with lfs plugin using ssh protocol.
  - Authentication when transporting lfs objects over http still missing, this is tracked in JGit bug 535814
- bug 534604 Enable resource selection for launch variables
- bug 533344 Allow cherry-picking a Gerrit change
- bug 531953 Allow cherry-picking merge commits
- bug 529255 Github API: Support diff/patch generation via the Github API

## Usability

- Add tracing of low-level JSch log messages
- Natural sort for refs in FetchResultTable
- Allow shortcuts for Gitflow commands
- bug 534404 Suggest complete repository path in NewRepositoryWizard
- bug 529449 Natural sort for tags in CreateTagDialog
- bug 478159 Show affected projects when deleting repository
- bug 510132 Add support for the "*" as wildcard character in the staging view filter
- bug 511628 Select repositories via double-click in RepositorySearchDialog
- bug 533019 Update staging view on repository config changes
- bug 532458 Remove some margins in staging view

## Performance Improvements

- bug 535516 Use hash lookup for TreeViewers
- Ignore IndexChangedEvent if it originates from the same JGit process
- bug 500106 Improve asynchronous Eclipse workspace refreshes done by EGit
- Speed up the RepositoriesViewContentProvider
- Use PathFilterGroup instead of PathFilter if possible. TreeWalks looking for a single path can use PathFilterGroup instead of PathFilter. This should be a little bit faster.
- In EGit use mmap to map git packfiles into memory. Avoids allocating JGit buffer cache on the Java heap.

## Bug Fixes

21 Bugs and 8 enhancement requests were closed

- bug 529141 Fix AssumeUnchangedOperation not working on directory/project
- bug 525769 Don't try to store incomplete credentials in secure store
- bug 470452 Improve check for uncommitted changes before cherry-pick
- bug 520693 Respect gitattributes in the compare editor
- bug 533230 Fix Repositories view blocking Eclipse on startup
- bug 533198 improve branch name validation performance which was bad for big repositories
- bug 533477 Fix substring matches in filter in branch selection dialogs
- bug 358206 Handle Gerrit Change-Ids for merge commits
- bug 533336 Keep Gerrit Change-Id for conflicting cherry-pick
- bug 531171 Remove problem characters from task related branch name suggestion
- bug 533019 Fix invalid thread access in staging view when config changes
- bug 525769 Don't try to store incomplete credentials in secure store
- bug 534440 Github API: Fix Repository.getWatchers(); add Repository.getStars()

## Removal of deprecated methods

- Remove deprecated UIUtils#applyHyperlinkDetectorStyleRanges and #getHyperlinkDetectorStyleRanges.
- Remove deprecated InitOperation constructor. Use InitOperation#InitOperation(Repository, InitParameters) instead.
- Remove deprecated GitFlowOperation#fetch(IProgressMonitor). Use GitFlowOperation#fetch(IProgressMonitor, int) instead.
- Remove deprecated FeatureTrackOperation constructor. Use FeatureTrackOperation#FeatureTrackOperation(GitFlowRepository, Ref, int) instead.
- Remove deprecated GitSynchronizeData#getSrcRemoteName
- Remove deprecated GitSynchronizeData#getSrcMerge
- Remove deprecated RepositoryMapping#getSubmoduleRepository. Use #getMapping(IResource) and then #getRepository()} on the returned mapping instead; it will return a submodule repository if the resource is in one.
- Remove deprecated RemoveFromIndexOperation(Repository, IResource[]). Use #RemoveFromIndexOperation(Collection) instead.
- Remove deprecated IgnoreOperation#IgnoreOperation(IResource[]). Use #IgnoreOperation(Collection) instead.
- Github API: Remove deprecated WatcherService. Use StargazerService instead.
- Github API: Remove deprecated User#getGravatarId and #setGravatarId
- Github API: Remove deprecated Repository#getMasterBranch and #setMasterBranch
- Github API: Remove deprecated Gist#setUser and #getUser methods

## Build and Release Engineering

- Update to latest Photon Orbit R20180606145124
- bug 530393 Update EGit license to EPL-2.0
- Update target platform to use Orbit R20180531190352
- bug 532272 Update API baseline in Oomph setup