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

<h2>Repository Layouts</h2>
	<p>There are several ways recommended by Subversion&reg; how users organize their repositories. By default there are trunk, branches and tags directories on the repository, which contain, correspondingly, trunk copy, branches copies and tag copies of the shared project.</p>
	<p>The common recommended layouts are:</p>
	<p>Single project layout (there is only one project in each repository folder):</p>
	<p>
		<i>
			<b>Tip:</b> Use this layout if you want to have several different projects on one repository location.
		</i>
	</p>
	<img border="0" src="../images/single_pr_layuot.png" alt="Single project layout"/>
	<p>Multiple project layout (there is a set of projects in each repository folder):</p>
	<p>
		<i>
			<b>Tip:</b> Use this layout if you want to have a shared multiple project solution.
		</i>
	</p>
	<img border="0" src="../images/multi_pr_layout.png" alt="Multiple project layout"/>
	<p>Monolithic project layout (the trunk folder is in the root of the repository):</p>
	<p>
		<i>
			<b>Tip:</b> Use this layout if you want to have one repository location for one solution.
		</i>
	</p>
	<img border="0" src="../images/monolit_pr_layout.png" alt="Monolithic Location layout"/>
	<p>Repository Location project layout (layout used in selected repository):</p>
	<img border="0" src="../images/rep_loc_layout.png" alt="Repository Location layout"/>
	<p>The user is free to change this layout by any way he wish, because branches, tags and trunk are only directories, witch also can be moved, copied or renamed as any other. But while changing repository layout the user must always care about other developers, using a repository. So feel free but accurate while changing repository layout.</p>
	<img border="0" src="../images/rel_tops.png" alt="Related topics"/>
	<br/>
	<a href="../gettingStarted/subversion/svn_folders.php">Trunk, Branches and Tags</a>
	<br/>
	<br/>
	</div>	

EOHTML;


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