
	EGit Installation

PREREQUISITES

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

- Eclipse version 3.5 (Ganymede) or 3.6 (Helios)

- Java 6. Java 1.5.0_11 and later seems to work. The reason is that
  the garbage collection does not do a good enough job when using memory
  mapped files. The sources can be hacked to used non-mapped files but
  that is very slow. JDK 1.4.x is *not* supported at all and JDK 1.5 is only
  supported as long as it works :).

- 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

- Delete any old versions of the plugin in the <eclipse-path>/plugins/org.eclipse.egit.*
- Start eclipse
- Make sure a recent JDK 1.5.0_11 or JDK 1.6.x is among your installed JRE's. Which
  one is the default should not matter but Java 6 is recommended. 
- Import the egit projects. Make sure there are no compilation errors
- Now you can either export the plugin to a set of jar files to use in an Eclipse 
  installation or run it from within Eclipse. The latter is for development and 
  tracking down bugs.
- Export the plugin by selecting the org.eclipse.egit.* packages in package
  explorer and choosing File/Export. Then select Deployable plug-ins and 
  fragments and choose the Next button. Set Directory to the top of your
  installation directory (NOT the plugins directory). Select Finish. After 
  that restart Eclipse. You can associate a project with Eclipse using the
  Team>Share menu in the context menu when a project is selected.

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.6 (or JDK1.5.0_11 or newer) if you have any problems.

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.
