<?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-16
	#
	# Description: Main project page
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Subversive - SVN Team Provider Project";
	$pageKeywords	= "Subversive, Subversion, SVN, Team Provider";
	$pageAuthor		= "Igor Vinnykov";
	
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">
		<h1>Subversive - SVN Team Provider</h1>
		<img align="left" src="images/logo.gif" style="padding-right: 10px;" alt="Subversive logo" />
		<p>The Subversive project aims to provide Subversion (SVN) integration for Eclipse. The Subversive plug-in gives you the ability to work with this CVS successor version control system from the Eclipse workbench. You can work with Subversion repositories in almost exactly the same way you can now work with CVS repositories using the CVS plug-in bundled in the standard Eclipse distribution.</p>
		<p>General features of the Subversive plug-in are quite similar to the CVS plug-in's features:</p>
		<ul>
			<li>Browse remote repository</li>
			<li>Share project to the repository and checkout projects from the repository</li>
			<li>Synchronize project to see incoming and outgoing changes</li>
			<li>Commit, update and revert changes</li>
			<li>See resource change history</li>
			<li>Merge changes</li>															
		</ul>
		<p>Similarity to the CVS plug-in is one of the most important project principles. It ensures that both plug-ins use similar concepts, semantics, and interface for similar things. At the same time Subversive was created specially for Subversion and using it, you can benefit from all Subversion's features including those features which differ from, or are not present in CVS.</p>
		
		<div class="homeitem3col">	
			<h3>Current State</h3>
			<p style="padding-left:10px;padding-right:10px;">
                In November 2007 project was migrated under Eclipse umbrella and started Incubation as Technology Project according to Eclipse requirements for new projects. At the same time project is stable and had a long history on the previous location at the the <a href="http://www.polarion.org/index.php?page=overview&project=subversive">Polarion.org</a>.
			</p>
		</div>
	</div>	

	<div id="rightcolumn">
        $sidebar		
	</div>

EOHTML;


	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
