<?php 
	set_include_path($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common" . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] . "/projects" . PATH_SEPARATOR . get_include_path());	
	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); 
	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");  
	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");  
	$App = new App(); 
	$Nav = new Nav(); 
	$Menu = new Menu();  
	include($App->getProjectCommon());    
	# All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# template.php
	#
	# Author: 		Igor Vinnykov
	# Date:			2007-11-23
	#
	# Description: Autogenerated for eclipse.org site pages from Eclipse IDE help
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Subversive - Documentation";
	$pageKeywords	= "Subversive, Subversion, SVN, Team Provider, documentation, user guid";
	$pageAuthor		= "Igor Vinnykov";
		
	include("_projectCommon.php");    # All on the same line to unclutter the user's desktop'
	
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">

	
	<h1>Installation and migration</h1>
	<p>Subversive distribution consists of two parts - Subversive plug-in and Subversive SVN Connectors. Both parts are required in order to work with Subversive. Subversive plug-in is provided under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. Subversive SVN Connectors are external libraries with their own licenses, which are distributed from external location at <a href="http://www.polarion.com/products/svn/subversive.php">www.polarion.com</a>.</p>
	<p>In order to install Subversive you should install Subversive plug-in and at least one of Subversive SVN connectors, such as native JavaHL connector or pure Java SVN Kit connector (please note, that we provide win32-compatible native libraries only, binaries for other platforms you need to install by yourself). Subversive plug-in and Subversive SVN Connectors are distributed from different update sites on different locations, so you should point two update sites in update manager if you use Eclipse version older than 3.5.</p>

	<h2>Installation and update process</h2>
	<p>Installation and update process is simple and straightforward. You can find step-by-step process descriptions in <a href="gettingStarted/aboutSubversive/install.php">Installation instructions</a> and in <a href="gettingStarted/aboutSubversive/update_eclipse.php">Update instructions</a>.</p>
	<p>Also please note that there is no way of migration from the Subversive 1.1.x since the latest plug-in version doesn't work with Eclise IDE versions older than 3.4 and Subversive 1.1.x does not support Eclipse 3.3 or higher either.</p>		

	<h2>Requirements</h2>
	<p>This version requires Eclipse 3.4 and doesn't support previous versions of Eclipse IDE. You can see full list of requirements in <a href="gettingStarted/aboutSubversive/requirements.php">'Requirements'</a> topic.</p>
	
	<p><i>If you have some questions on Subversive versions refer to <a href="faq.php#versions">Versions and compatibility</a> FAQ section.</i></p>
		<br/>
	<br/>
	</div>	

EOHTML;


	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>