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

<h3>Patching</h3>
	<p><b>Create patch</b></p>
	<p>Patch is an information on differences of revisions (remote patch creating) or differences between workspace copy and base revision. The user can save this info to clipboard or to specified local file system file or project file. To perform the action click on the <i>'Team>Create Patch...'</i> menu item of the resource pop-up menu <i>'Create Patch...'</i> menu item of the <i>'SVN main menu group'</i>. The wizard will help the user to perform the operation.</p>
	<p>If the user is creating a remote patch the first page of the wizard provides a probability to choose a revision number to create patch comparatively to:</p>
	<img border = "0" src="../../images/create_patch.png" alt="Create patch wizard"/>
	<p>The second (first) page of the wizards offers the user to choose, where does he want to save patch information and if the patch is local choose the resources to be included into:</p>
	<img border = "0" src="../../images/create_patch2.png" alt="Create patch wizard"/>
	<p>The third (second) and the last page of the wizard allows the user to choose what information shall the patch contain and a root or the patch:</p>
	<img border = "0" src="../../images/create_patch3.png" alt="Create patch wizard"/>
	<p>Later created patch may be applied to another revision of the resource.</p>
	<p><b>Applying patch</b></p>
	<p>Applying patch means setting a resource contents to a state specified in the patch. To apply a patch click  on the 'Team>Apply Patch...' menu item of the resource pop-up menu.</p>
	<img border="0" src="../../images/rel_tops.png" alt="Related topics"/>
	<br/>
	<a href="../../teamSupport/svn_main_menu.php">SVN main menu group</a>
	<br/>
	<br/>
	</div>	

EOHTML;


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