
EGit Installation

PREREQUISITES

In order to install the Git Eclipse plugin you need to have the following
things.

- Eclipse version 3.8.2/4.2.2 or newer

- Since 4.6 JGit and EGit require Java 8.

- A reasonably recent version of Git itself installed on your platform to
  take care of what the plugin does not yet do or do things that native
  git does better. Some tests have been performed using both Cygwin and MSYS git.
  Both have issues that we need both feedback and patches for.

AUTOMATED INSTALLATION INSTRUCTIONS

- Find installation instructions on http://www.eclipse.org/egit/download/

MANUAL INSTALLATION INSTRUCTIONS

- Run the Maven build as described in the contributor guide
  https://wiki.eclipse.org/EGit/Contributor_Guide#Builds
  and install egit from the p2 repository generated by the build at
  org.eclipse.egit.repository/target/repository

DEBUGGING INSTRUCTIONS

- Select the org.eclipse.egit.ui project, and using the context menu select
  Run As(or Debug As) / Eclipse Application. Make sure the application runs
  using JDK 1.8 or newer.

REPORTING BUGS

- There may be errors in the <workspace>/.metadata/.log or even on stdout that can help
  you track down and problem. When reporting errors include stack traces and the commit
  id or the version your plugin is built from, or the version of the plugin if it does
  not contain a date.

- Check http://www.eclipse.org/egit/support/ to find information about reporting bugs.
