<project>
  <!--
     - This example is annotated to be instructive. In order to be instructive, the
     - example is a mish-mash of information from a variety of projects. Obviously, 
     - when you write the project-info.xml file for your project, the file will 
     - contain information only about your one project.
    -->
  <!--
     - Unless otherwise specified, all URLs are to be specified using rooted relative
     - paths. In other words:
     -    CORRECT: "/webtools/foo/bar.php"
     -    INCORRECT: "foo/bar.php"
     -    INCORRECT: "http://www.eclipse.org/webtools/foo/bar.php"
    -->
  
  <!--
     - Each Eclipse project as an official name, e.g., 
     - "AJDT - AspectJ Development Tools Project" and a foundation database 
     - key, e.g., "technology.ajdt". These are stored in an Eclipse Foundation
     - database; You can override the name stored on the database by filling 
     - the <name/> tag
    -->
  <name>Subversive - SVN Team Client</name>
    
  <!--     
     - Each project can also have a short name to be used in HTML lists and 
     - other horizontally challenged places.
    -->
  <short-name>Subversive</short-name>
  
  <!--
     - Each Eclipse project has one or more Bugzilla products and components.
     - Some projects also have a separate web page describing how to submit
     - a bug, how bugs are prioritized, and other useful information.
     - The <bugzilla> collects this information.
     - 
     - <bugzilla url="..."> <product name="..."/> ... </bugzilla>
     - The url is optional; if absent, the url will default to the Bugzilla
     - page of the first product. Multiple <product>s are allowed.
    -->
  <bugzilla>
    <product name="Subversive"/>
  </bugzilla>

  <!--
     - Committers and non-committer Contributors are the raison d'etre of 
     - an Eclipse project, thus each project should list and acknowledge these
     - developers. Some of the Committers are 'special' in the sense that
     - they are the project leaders.  The <team> element contains the 
     - URL of the project's pages listing these important people.
    -->
<!--
  <team url="/webtools/people/contributors.html"/>
-->  
  
  <!--
     - Most projects have wiki pages with documentation or work in progress
     - or discussions or whatever wikis are good for. The <wiki> element
     - contains the URL of the 'root' of the project's wiki pages.
    -->
  <wiki url="http://wiki.eclipse.org/index.php/Subversive"/>
  
  <!--
     - The source code of each Eclipse project is stored in CVS. Eclipse maintains
     - a number of CVS repositories, thus the <cvs> element specifies which
     - CVS repository and (if applicable) which root path stores this project's
     - source code.
     -
     - A top-level project typically specifies only the repository:
     -     <cvs repository="/cvsroot/tptp"/>
     - A sub-project includes the root path as well:
     -     <cvs repository="/cvsroot/technology/">
     -       <module path="org.eclipse.higgins" />
     -     </cvs>
    -->
<!--    
  <cvs repository="/cvsroot/tools/">
    <module path="org.eclipse.cdt-build" /> 
    <module path="org.eclipse.cdt-contrib" /> 
    <module path="org.eclipse.cdt-core" /> 
    <module path="org.eclipse.cdt-cppunit" /> 
    <module path="org.eclipse.cdt-debug" /> 
    <module path="org.eclipse.cdt-doc" /> 
    <module path="org.eclipse.cdt-build" /> 
    <module path="org.eclipse.cdt-build" /> 
    <module path="org.eclipse.cdt-build" /> 
  </cvs>
-->

  <!--
     - The description of an Eclipse project shows up in many places: the
     - project's home page, perhaps the /projects/ page listing all the
     - top-level projects, in the Roadmap, and so on. Some of the descriptions
     - are separate HTML files (such as those described in 
     - http://phoenix.eclipse.org/projects/dev_process/project-status-infrastructure.php).
     - It would be nice 
     - This <description> element contains two additional descriptions.
     -    1. The optional <description url="..."> points to a web page with a larger
     -       description of the entire project. 
     -    2. The required <description paragraph-url="..."> points to a file
     -       containing a couple of simple HTML paragraphs describing the project. 
     -       This file is often stored in the /project-info/ directory, thus the
     -       url would be something like "/tptp/project-info/description.html".
    -->
    
  <description
     paragraph-url="/subversive/project-info/description.php"/>
 
  
  <!--
     - In addition to the description, each Eclipse project is also required to
     - provide an up-to-date status summary. "Up to date" means revised at least
     - quarterly. 
     - The required <summary paragraph-url="..."> points to a file
     - containing a number of simple HTML paragraphs with an executive summary
     - of the project status.
     - This file is often stored in the /project-info/ directory, thus the
     - url would be something like "/technology/project-info/executive-summary.html".
    -->
<!--    
  <summary paragraph-url="/technology/project-info/executive-summary.html"/>
-->

  <!--
     - It is important to help new users get started with an Eclipse project
     - because most Eclipse projects are solving some difficult technical
     - problem and thus are somewhat complex. The <getting-started> element
     - points to a web page on the project's site that describes how to
     - get started using and extending the project's tools and frameworks.
    -->
<!--    
  <getting-started url="/webtools/community/communityresources.html#tutorials"/>
-->  
  
  <!--
     - It is also important to help new contributors get started with an Eclipse project.
     - Most Eclipse projects have interesting/complex development environment
     - setups or to-do lists. The <contributing> element
     - points to a web page on the project's site that describes how to
     - get started developing on, and contributing to, the project.
    -->
<!--    
  <contributing url="/webtools/adopters/"/>
-->  
  
  <!--
     - Each Eclipse project is required to maintain a current Project IP Log.
     - See http://www.eclipse.org/projects/dev_process/project-log.php
     - The <ip-log> contains the URL of that log.  If the project has
     - other legal information as well, it can use the <legal> element
     - instead and then include the IP Log information on the Legal web page.
    -->
<!--    
  <ip-log url="/projects/slides/Web%20Tools%20Platform%201.0%20Project%20IP%20Log.pdf"/> 
  <legal url="/projects/slides/Web%20Tools%20Platform%201.0%20Project%20IP%20Log.pdf"/> 
-->

  <!--
     - Each Eclipse project has one or more mailing lists.
     - Some projects also have a separate web page describing these lists
     - while others rely on the main Eclipse mailing lists page.
     - 
     - <mailing-lists url="..."> <list name="..."/> ... </mailing-lists>
     - The url is optional; if absent, the url will default to the Eclipse
     - mailing lists page. Multiple <lists>s are allowed.
     -
     - Note that currently mailing lists must be redundantly listed in
     - the separate project-info/maillist file as well.
    -->
<!--    
  <mailing-lists url="/birt/index.php?page=community.html">
    <list name="birt-news"/>
    <list name="birt-pmc"/>
    <list name="birt-dev"/>
    <list name="birt-charting-dev"/>
    <list name="birt-report-engine-dev"/>
    <list name="birt-report-designer-dev"/>
  </mailing-lists>
-->  
  
  <!--
     - Each Eclipse project has one or more newsgroups.
     - Some projects also have a separate web page describing these lists
     - while others rely on the main Eclipse newsgroups page.
     - 
     - <newsgroups url="..."> <newsgroup name="..."/> ... </newsgroups>
     - The url is optional; if absent, the url will default to the Eclipse
     - newsgroups page. Multiple <newsgroups>s are allowed.
    -->
  <newsgroups>
    <newsgroup name="eclipse.technology.subversive"/>
  </newsgroups>
  
  <!--
     - The dashboard attempts to measure the liveness of a project in many
     - ways including the traffic on the mailing lists and newsgroups. There
     - are other places where significant project-related traffic can occur
     - including blogs and articles. When listed here, the dashboard incorporates
     - them into the liveness measure (or rather, "will incorporate").
    -->
<!--    
  <articles>
    <article url="/articles/Article-Forms/article.html"/>
    <article url="http://www.onjava.com/pub/a/onjava/2002/12/11/eclipse.html"/>
  </articles>
-->  
  
<!--  
  <blogs>
    <blog rss="http://eclipse-projects.blogspot.com/atom.xml"/>
  </blogs>
-->  
  
  <!--
     - Each Eclipse project needs to have a plan both for its internal purposes
     - (to guide development and resource allocation) and for the larger Eclipse
     - community and ecosystem to understand what will be delivered and when
     - it will be delivered.
    -->
<!--    
  <project-plan url="/birt/index.php?page=project/project_plan_R2_0_0_Draft.html"/>
-->  

  <!--
     - Each Eclipse project creates (optional) nightly builds and milestone builds,
     - but the important builds of a project are the releases. This section of the
     - status file records the completed (past) and scheduled (future) releases of
     - the project. 
     - The status, name, and date are required attributes. The download is optional
     - and only valid for completed releases; the plan is optional and valid for
     - all releases.  The three valid types of releases are, in order of ascending 
     - uncertainity: "completed", "scheduled", and "tentative".  Dates can be
     - specified as particular day DD/MM/YYYY (e.g., 22/03/2005) or a particular
     - month MM/YYYY (e.g., 10/2005), or a quarter NQYYYY (e.g., 3Q2005). Obviously
     - completed releases should include the exact day the release was completed.
     -
     - In the following example, we have three completed, two scheduled, and one 
     - tentative release.
    -->
<!--    
  <releases>
    <release 
       status="completed"
       name="3.0.2"
       date="02/2005"
       download="/tptp/home/downloads/drops/3.0.2.html" />
    <release 
       status="completed"
       name="3.3"
       date="06/2005"
       download="/tptp/home/downloads/drops/3.3.0.html" />
    <release 
       status="completed"
       name="4.0"
       date="30/07/2005"
       download="/tptp/home/downloads/drops/TPTP-4.0.0-200507181519.html" />
    <release 
       status="scheduled"
       name="4.1"
       date="14/01/2006"
       plan="/tptp/home/project_info/featureplans/features.php?source=
             All&amp;project=All&amp;release=4.1&amp;file=TPTPFeatures_4.1.xml" />
    <release 
       status="scheduled"
       name="4.2"
       date="06/2006" />
    <release 
       status="tentative"
       name="4.3"
       date="4Q2006" />
  </releases>
-->  
</project>
