
	EGit Installation

PREREQUISITES

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

- Eclipse version 3.3.1, or 3.4.0

- 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-mmaped 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.

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 withe 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.

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.
