<?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">

		<h2>SVN</h2>
		<p>
			The following sections describe the preferences available in the tab groups of the 
				<i>'Team>SVN'</i>
			 properties page. It allows to customize global SVN&reg; Team preferences: choose client, customize views, repository location folders and some general features. To configure specific preferences refer to appropriate tab.
		</p>
		<b>General</b>
		<p>Here the user can enable some general plug-in features.</p>
		<table cellpadding="1" cellspacing="0" border="0">
			<tr>
				<td valign="top" align="left">
					<p align="left">
						<i>
							<b>Tip:</b>
						</i>
					</p>
				</td>
				<td valign="top">
					<p>
						<i>
							Enabling these features can seriously influence user's comfort. We think that it's much more convenient to enable automatic selection of a new resources while committing and ignore needless ones, but the user can disable this feature and add the resources to Version Control manually. If the user is using some externals that he is going to change and not only use of course he would like to enable checking externals.
						</i>
					</p>
				</td>
			</tr>
		</table>
		<table cellpadding="5" cellspacing="0" border="1" width="100%">
			<tr>
				<td class="header" align ="center" valign="center">Option</td>
				<td class="header" align ="center" valign="center">Description</td>
				<td class="header" align ="center" valign="center">Default</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Check the new resources in the commit dialog</td>
				<td align ="center" valign="center">Specifies if the plug-in should check the new resources in the commit dialog.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Do not check external resources according to Subversion&reg; recommendations.</td>
				<td align ="center" valign="center">If enabled prevents Subversion&reg;  from checking external resources.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Enable automatic project share</td>
				<td align ="center" valign="center">When chosen Subversive automatically shares the imported project if the SVN info of this project corresponds to the registered repository location.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Compute keywords property value.</td>
				<td align ="center" valign="center">When chosen Subversive computes recursively the keywords' property values for all resources before the 'Set keyword' dialog is shown.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Use case-insensitive table sorting.</td>
				<td align ="center" valign="center">Choose if you want to use a case-insensitive sorting.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
		</table><br/>
		This is how <i>'General'</i> tab group looks like:
		<br/><br/><img border="0" src="../images/pref_general.png" alt="General tab group"/><br/><br/>
		<b>SVN Connector</b><br/>
		<p>Here the user can choose the SVN&reg; connector he wants to use.</p>
		<table cellpadding="5" cellspacing="0" border="1" width="100%">
			<tr>
				<td class="header" align ="center" valign="center">Option</td>
				<td class="header" align ="center" valign="center">Description</td>
				<td class="header" align ="center" valign="center">Default</td>
			</tr>
			<tr>
				<td align ="center" valign="center">SVN Connector</td>
				<td align ="center" valign="center">Allows to choose witch SVN connector to use.</td>
				<td align ="center" valign="center">Subversive Default</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Use SVN Merge view</td>
				<td align ="center" valign="center">When chosen Subversive allows to use Synchronize View features during the merging.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Show merged revisions</td>
				<td align ="center" valign="center">When chosen Subversive show revisions, which took part in the merges, while viewing resource history.</td>
				<td align ="center" valign="center">Disabled</td>
			</tr>
		</table><br/>
		This is how <i>'SVN Connector'</i> tab group looks like:
		<br/><br/><img border="0" src="../images/pref_client.png" alt="SVN Connector tab group"/><br/><br/>
		<b>Repository</b><br/>
		<p>Here the user can configure repository structure.</p>
		<table cellpadding="1" cellspacing="0" border="0">
			<tr>
				<td valign="top" align="left">
					<p align="left">
						<i>
							<b>Tip:</b>
						</i>
					</p>
				</td>
				<td valign="top">
					<p align="justify">
						<i>
							There are two ways how to define a location of a branch (tag), which is being created: the first option is to trust the plug-in to detect it respecting project structure (for repository locations with enabled structure detection) and the second one is to let a user to define URL manually.
						</i>
					</p>
				</td>
			</tr>
		</table>
		<table cellpadding="5" cellspacing="0" border="1" width="100%">
			<tr>
				<td class="header" align ="center" valign="center">Option</td>
				<td class="header" align ="center" valign="center">Description</td>
				<td class="header" align ="center" valign="center">Default</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Trunk</td>
				<td align ="center" valign="center">Default repository root name for trunk.</td>
				<td align ="center" valign="center">trunk</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Branches</td>
				<td align ="center" valign="center">Default repository root name for branches.</td>
				<td align ="center" valign="center">branches</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Tags</td>
				<td align ="center" valign="center">Default repository root name for tags.</td>
				<td align ="center" valign="center">tags</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Show resources linked with svn:externals</td>
				<td align ="center" valign="center">When enabled the resources linked as externals are shown in Repository Tree and Repository Browser.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Use '.project' project name for the working copy instead of repository folder name</td>
				<td align ="center" valign="center">When enabled uses the local project name from '.project'. Disabling improves check out performance.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Branch (tag) location definition.</td>
				<td align ="center" valign="center">'Respect project structure' option allows plug-in to detect locations automatically, 'Manual specification' option offers the user to define URL manually.</td>
				<td align ="center" valign="center">Respect project structure</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Always freeze svn:externals for tags</td>
				<td align ="center" valign="center">Locks a probability of adding svn:externals for tags.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
		</table><br/>
		This is how <i>'Repository'</i> tab group looks like:
		<br/><br/><img border="0" src="../images/pref_repos.png" alt="Repository tab group"/><br/><br/>
		<b>View Settings</b><br/>
		<p>Here the user can configure some view settings.</p>
		<table cellpadding="1" cellspacing="0" border="0">
			<tr>
				<td valign="top" align="left">
					<p align="left">
						<i>
							<b>Tip:</b>
						</i>
					</p>
				</td>
				<td valign="top">
					<p>
						<i>
							To improve performance disable contiguous synchronize info showing. After disabling the synchronization info will be get in whole and you'll have to wait for a while for an operation to finish.
						</i>
					</p>
				</td>
			</tr>
		</table>
		<table cellpadding="5" cellspacing="0" border="1" width="100%">
			<tr>
				<td class="header" align ="center" valign="center">Option</td>
				<td class="header" align ="center" valign="center">Description</td>
				<td class="header" align ="center" valign="center">Default</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Show synchronize info incrementally</td>
				<td align ="center" valign="center">Specifies if the synchronization info will be get in series (Enabled) or in whole (Disabled).</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Enable paging with a following page size</td>
				<td align ="center" valign="center">Enable paging in a 'History View' and specifies a page size.</td>
				<td align ="center" valign="center">Enabled / 25</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Show History View while comparison</td>
				<td align ="center" valign="center">Specifies if the history view is shown when one of 'Compare With' actions is called.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
		</table><br/>
		This is how <i>'View Settings'</i> tab group looks like:
		<br/><br/><img border="0" src="../images/pref_view_settings.png" alt="View Settings tab group"/><br/><br/>
		<b>Error Reporting</b><br/><br/>
		<table cellpadding="5" cellspacing="0" border="1" width="100%">
			<tr>
				<td class="header" align ="center" valign="center">Option</td>
				<td class="header" align ="center" valign="center">Description</td>
				<td class="header" align ="center" valign="center">Default</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Enable error reporting</td>
				<td align ="center" valign="center">Allows user to send error reports.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Inform me if report could not be sent</td>
				<td align ="center" valign="center">Allows plug-in to notify user if there have been some problems met while sending an error report.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
		</table><br/>
		This is how <i>'Error Reporting'</i> tab group looks like:
		<br/><br/><img border="0" src="../images/pref_error_reporting.png" alt="Error Reporting tab group"/>
		<br/>
	<br/>
	</div>	

EOHTML;


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