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

		<br/>
		<h1>Team support with SVN</h1>
		<p>This part will help the developers to use the SVN&reg; team capabilities built into Subversive plug-in.</p>
		<p>It's explained how to share your project to the remote repository location and then work on it with your team mates. After going through this part the user will be able to perform all the SVN&reg; actions easily.</p>
		<p>Let's take a quick run on an example team working cycle on some big project.</p>
		<p>
			So, some software company has really big set of projects. Earlier this company used another version control system, non SVN, and made a decision to trust Subversion&reg;, choosing this plug-in to get comfortable working environment. Company administrator has already installed Subversion&reg; on the company server and created a repository. The local copy of all of the company projects is available and the first thing he would like to do will be sharing them, so the developers team could continue their work on them. And he notices the first profit of the Subversive plug-in - multiple projects sharing.
			<table cellpadding="1" cellspacing="0" border="0">
				<tr>
					<td valign="top" align="left">
						<p align="left">
							<i>
								<b>Note:</b>
							</i>
						</p>
					</td>
					<td valign="top">
						<p>
							<i>
								For information on sharing refer to <a href="teamSupport/SVNaction/share.php">Sharing</a> and <a href="teamSupport/sharing_wiz.php">SVN Sharing Wizard</a> topics of this part of the guide.
							</i>
						</p>
					</td>
				</tr>
			</table>
		</p>
		<p>
			But to start sharing he should create a repository location and tell the development team to do the same to let them check out appropriate projects in future.
			<table cellpadding="1" cellspacing="0" border="0">
				<tr>
					<td valign="top" align="left">
						<p align="left">
							<i>
								<b>Note:</b>
							</i>
						</p>
					</td>
					<td valign="top">
						<p align="justify">
							<i>
								For information on creating a new repository location refer to <a href="teamSupport/new_location_wiz.php">SVN Repository Location Wizard</a> topic of this part of the guide.
							</i>
						</p>
					</td>
				</tr>
			</table>
		</p>
		<p>
			The projects are shared and the development team can start there work. Firstly they have to check out the projects they need to work with. Another uniquie feature of Subversive plug-in comes on sight at once - there is no problem from now on with browsing throughout the location to find needed projects. Every member of the team should only start the Find/Check Out As wizard and as it finds all the Eclipse projects shared on the location simply select the needed ones to be checked out to the appropriate workspace.
			<table cellpadding="1" cellspacing="0" border="0">
				<tr>
					<td valign="top" align="left">
						<p align="left">
							<i>
								<b>Note:</b>
							</i>
						</p>
					</td>
					<td valign="top">
						<p align="justify">
							<i>
								For information on checking out refer to <a href="teamSupport/SVNaction/check_out.php">Checking out</a> and <a href="teamSupport/find_check_wiz.php">SVN Find/Check Out As Wizard</a> topics of this part of the guide.
							</i>
						</p>
					</td>
				</tr>
			</table>
		</p>
		<p>
			So every member of the team now can continue his everyday work. The Subversive plug-in doesn't limit the work strategy  - it provides support both to the teams using 'Lock-Modify-Unlock Solution' model and teams using 'Copy-Modify-Merge Solution' model.
		</p>
		<p>If you are new to version control systems please go throughout this chapter really attentively to understand well what commits, updates, merges and other actions are used for. It's strongly recommended to try emulating the team development while reading this part. Good luck!</p>
		<img src="images/inside.png"/>
		<br/>
		<a href="teamSupport/repos_persp.php">SVN Repository Exploring Perspective</a>
		<br/>
		<a href="teamSupport/new_location_wiz.php">SVN Repository Location Wizard</a>
		<br/>
		<a href="teamSupport/create_repository.php">SVN Repository Dialog</a>
		<br/>
		<a href="teamSupport/sharing_wiz.php">SVN Sharing Wizard</a>
		<br/>
		<a href="teamSupport/find_check_wiz.php">SVN Find/Check Out As Wizard</a>
		<br/>
		<a href="teamSupport/console.php">SVN Console</a>
		<br/>
		<a href="teamSupport/repos_view.php">SVN Repository View</a>
		<br/>
		<a href="teamSupport/repos_browser_view.php">SVN Repository Browser View</a>
		<br/>
		<a href="teamSupport/history_view.php">SVN History View</a>
		<br/>
		<a href="teamSupport/workspace_synch.php">SVN Workspace Synchronization</a>
		<br/>
		<a href="teamSupport/merge_dialog.php">SVN Merge Dialog</a>
		<br/>
		<a href="teamSupport/props_view.php">SVN Properties View</a>
		<br/>
		<a href="teamSupport/locks_view.php">SVN Locks View</a>
		<br/>
		<a href="teamSupport/svn_info.php">SVN Info</a>
		<br/>
		<a href="teamSupport/svn_toolbar.php">SVN Toolbar</a>
		<br/>
		<a href="teamSupport/svn_label_decor.php">SVN Label Decorations</a>
		<br/>
		<a href="teamSupport/svn_main_menu.php">SVN main menu group</a>
		<br/>
		<a href="teamSupport/tree_conflicts.php">SVN Tree Conflicts</a>
		<br/>
		<a href="teamSupport/connectors_discovery.php">SVN Connectors Discovery</a>
		<br/>
		<a href="teamSupport/revision_graph.php">SVN Revision Graph</a>
		<br/>
		<a href="teamSupport/actions.php">Actions</a>
		<br/>
		<a href="teamSupport/compare.php">Working with Compare Editor</a>
		<br/>
		<a href="teamSupport/refactor.php">Refactoring</a>
		<br/>
		<a href="teamSupport/layouts.php">Repository Layouts</a>
		<br/>
		<a href="teamSupport/keys.php">Hot Keys</a>
		<br/>
	<br/>
	</div>	

EOHTML;


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