<?php 
	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";
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn" style="width:95%">

		<h1>FAQ</h1>
		<h2>General</h2>
		<a class="content"  href="#install">How to install Subversive?</a>
		<br/>
		<a class="content"  href="#create">How can I create a repository and fill it with data?</a>
		<br/>
		<a class="content"  href="#checked">How to start use Subversive with already checked out projects?</a>
		<br/>
		<a class="content"  href="#changes">Subversive doesn't see the file changes.</a>
		<br/>
		<a class="content"  href="#linux">How can I use JavaHL Connector on Linux OS?</a>
		<br/>
		<h2>Versions and compatibility</h2>
		<a class="content"  href="#version">Is it right that version 0.7 is newer then versions 1.1.0 and 1.0.0, which I previously used?</a>
		<br/>
		<a class="content"  href="#compatibility">I use Eclipse 3.2. Can I use Eclipse Subversive?</a>
		<br/>
		<h2>Feedback</h2>
		<a class="content"  href="#bug">How to send a bug report?</a>
		<br/>
		<a class="content"  href="#improve">How can I participate in Subversive improvement?</a>
		<br/>
		<hr width="100%"/>
		<h2>General</h2>
		<p align="justify" id="install">
			<h3>How to install Subversive?</h3>
			The most friendly installation process - point Eclipse update manager to Subversive Update Site and follow instructions of Installation wizard. If for some reason you can't use Update Site you can download so-called Archived Update Site and point Eclipse update manager to this file locally on your computer.
			Please refer <a href="gettingStarted/aboutSubversive/install.php">Installation instructions</a> topic for details how to install, update and manage Subversive.
		</p>
		<br/>
		<p id="create">
			<h3>How can I create a repository and fill it with data?</h3>
			Unfortunately there is no any probability to create the SVN&reg; repository using plug-in UI, so you'll have to do it manually using 'svnadmin create' command. To import required data to the repository create a repository location using <a href="teamSupport/new_location_wiz.php">'SVN Repository Location Wizard'</a>, share required project (or projects) using <a href="teamSupport/sharing_wiz.php">'SVN Sharing Wizard'</a> and perform the initial commit.
		</p>
		<br/>
		<p id="checked">
			<h3>How to start use Subversive with already checked out projects?</h3>
			<u>If you have project checkouted by another Eclipse SVN plug-in and want to work with it using Subversive</u><br/>
			<ol>
				<li>
					You need to disconnect project first. Select project and execute <i>'Team > Disconnect'</i>. Select "Do not delete SVN meta information" in disconnect dialog and SVN working copy will not be deleted. It gives you possibility to use this working copy later with Subversive and avoid re-checkout process. Note that if disconnect will be skipped it causes problem if you will uninstall Eclipse SVN plug-in which was used for the project checkout.
				</li>
				<li>Now you can connect project to repository using Subversive. Select project and execute Team > Share Project. Select Subversive SVN provider in Share Project wizard and at the end you will be prompted to choose the SVN location. You can keep repository settings defined in project or reconnect to another repository.</li>
			</ol>
			<u>If you have project checkouted by another SVN client</u>
			If project has meta-information (.svn folders) you can just import it into the workspace, which cause automatic connection to the Subversive if appropriate SVN location will be found. In order to make import select <i>'File > Import... > General > Existing projects into Workspace'</i>.
		</p>
		<br/>
		<p id="changes">
			<h3>Subversive doesn't see the file changes.</h3>
			Have you tried editing outside Eclipse IDE? If so, please hit refresh (F5) button over the project node.
		</p>
		<p id="linux">
			<h3>How can I use JavaHL Connector on Linux OS?</h3>
			Please refer to <a href="gettingStarted/aboutSubversive/linux.php">'Note for Linux users'</a> documentation page.
		</p>
		<hr width="100%"/>
		<h2 id="versions">Versions and compatibility</h2>
		<p id="version">
			<h3>Is it right that version 0.7 is newer then versions 1.1.0 and 1.0.0, which I previously used? </h3>
			Yes, it's right, that version is most consistent and up-to-date. Why it has 0.7 number? According to Eclipse Foundation requirements, new and migrated projects should go through incubation phase. On incubation phase project should have version less then 1.0 - that's a reason of version change. 
		</p>
		<br/>
		<p id="compatibility">
			<h3>I use Eclipse 3.2. Can I use Eclipse Subversive?</h3>
			Version, distributed on Eclipse.org requires Eclipse 3.3, so you can't use it. But you can use one of previous Subversive releases still distributed from former project home at <a href="http://www.polarion.org">www.polarion.org</a>. 
		</p>
		<hr width="100%"/>
		<h2>Feedback</h2>
		<p id="bug">
			<h3>How to send a bug report?</h3>
			Subversive handles errors and in case of error detection is asked for sending of the automatic error report. This report contains required information such as stack trace and Java environment. You can also provide your comments about a problem, which help developers to find a reason of problem. Note that report doesn't contain any confidential information and you can review what exactly will be sent. All what you need to send such report is just to press a button in dialog.
		</p>
		<br/>
		<p id="improve">
			<h3>How can I participate in Subversive improvement?</h3>
			We cordially invite everyone in the Subversive community to get involved with the project newsgroup at <a href ="news://news.eclipse.org/eclipse.technology.subversive">news://news.eclipse.org/eclipse.technology.subversive</a> (more below). This is crucial if we want to reach the eventual goal of inclusion of Subversive in the Eclipse IDE. Synergy of the Subversive team and the Community will lead the way towards defining the expectations of the potential user community, adjusting the project's goals accordingly, and eventually accomplishing those goals.<br/><br/>
			<u>How to participate in discussion</u><br/>
			You can send your comments about the Subversive project proposal or share you vision about the Subversive as a whole, to the <a href="news://news.eclipse.org/eclipse.technology.subversive">news://news.eclipse.org/eclipse.technology.subversive</a> newsgroup.<br/><br/>
			In order to participate in discussions you should request a free password to access the newsgroups by filling the registration form on <a href="http://www.eclipse.org/newsgroups/register.php">http://www.eclipse.org/newsgroups/register.php</a>. You'll receive login credentials by e-mail shortly after registering. You can work with newsgroups using simple web interface or setup your favorite NNTP news reader like Outlook, Thunderbird, etc.<br/><br/>
			<u>Access through Web interface</u><br/>
			Eclipse.org provides simple and useful web interface, which allows reading posts and writing answers. Use following link to access the Subversive newsgroup on eclipse.org: <a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.subversive">http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.subversive</a><br/><br/>
			<u>Access through news readers</u><br/>
			You can use any news reader, which supports NNTP. The most popular mail clients like Outlook and Thunderbird can be used to work with newsgroups. Let's follow MS Outlook Express setup process by example.<br/><br/>
			<ol>
				<li>Start MS Outlook Express</li>
				<li>Click on Tools &gt; Accounts... menu item</li>
				<li>Switch to the News tab</li>
				<li>Perform Add &gt; News...</li>
				<li>On the first page of the wizard enter your name, which will be shown in posts. Click on Next button.</li>
				<li>On the second page of the wizard enter your e-mail address. Click on Next button.</li>
				<li>On the third page of wizard enter <i>news.eclipse.org</i> as NNTP server. Set <i>My news server requires me to log on</i> option. Click on Next button.</li>
				<li>On the fourth page of the wizard enter username and password, which you receive by e-mail during subscription. Click on Next button.</li>
				<li>Click on Finish button</li>
				<li>Click on Close button in order to close Internet Accounts window</li>
				<li>You will be prompted to download the list of available newsgroups. Click on OK button.</li>
				<li>In the list find <i>eclipse.technology.subversive</i> newsgroup, select it and click on Subscribe button.</li>
				<li>Click on OK button in order to close Newsgroups Subscriptions dialog</li>
			</ol>
			Now you can select <i>eclipse.technology.subversive</i> node in the Folders tree in order to see posts in this newsgroup and make own posts.<br/><br/>
			In order to setup any news reader use following settings:<br/>
			News server: <i>news.eclipse.org</i><br/>
			Port: <i>119, or 80 for firewalled users</i><br/>
			SSL: <i>no</i></br>
			UserID and Password are provided during subscription.
		</p>
		<br/>
	<br/>
	</div>	

EOHTML;


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