<?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:			2008-07-01
	#
	# 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">

	<br/>
<h1>Getting Started</h1>
	<p>In this part the user can find some basic concepts on Subversion&reg;, general information on Subversive plug-in, integration instructions and the answer for the common questions on the product.</p>
	<p>Also the Subversive architecture, modules and extension points information is included for more experienced users. We hope this information might be quite useful.</p>
	<p>If you are new to SVN or version control systems please first of all refer to the <a href="gettingStarted/subversion/svn_intro.php">'Subversion&reg; (SVN)'</a>. You'll find there the introduction to Subversion&reg;, information about subversion folders and some useful links, which can help you to get closer to SVN&reg;.</p>
	<p>First of all the user would like to install the Team plug-in. Before installation the user should familiarize himself with <a href="gettingStarted/aboutSubversive/requirements.php">requirements</a>. To get detailed installation instructions refer to the <a href="gettingStarted/aboutSubversive/install.php">'Subversive installation instructions'</a> topic of this guide part.</p>
	<p>Subversive plug-in can be easily integrated with FastTrack, Buckminster and Mylyn. To get detailed instructions on Mylyn integration refer to <a href="gettingStarted/aboutSubversive/mylyn.php">Mylyn integration</a> topic of this guide part.</p>
	<h2>Where shall I go further?</h2>
	<p>In the <a href="prefs.php"><b>'Preferences'</b></a> part the user can find an information on Subversive plug-in options and configuring them.</p>
	<p>To find the information on an everyday work with the Subversive the user should refer <a href="teamSupport.php"><b>'Team support with SVN'</b></a> part. There he would find an information on GUI, SVN&reg; actions, example of a typical working cycle with SVN&reg; and a lot of useful recommendations.</p>
	<p>We do hope you'll find the structure of this guide comfortable.</p>
	<p>To get answers on a frequently asked questions refer to <a href="faq.php">'FAQ'</a> topic in the root of this guide.</p>
	<img src="images/inside.png"/>
	<br/>
	<a href="gettingStarted/subversion/svn_intro.php">Subversion (SVN)</a>
	<br/>
	<a href="gettingStarted/subversive.php">About Subversive and Subversive User Guide</a>
	<br/>
	<br/>
	</div>	

EOHTML;


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