<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<HEAD>

<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2011. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
<title>Checking out a project from a CVS repository</title>
<meta name="keyword" content="team">
<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js" type="text/javascript"> </script>
</HEAD>

<BODY BGCOLOR="#ffffff">
<H1>Checking out a project from a CVS repository</H1>

<P>Projects can be checked out from a CVS repository into the Workbench using 
  the Checkout wizard or from the CVS Repositories view.</P>
<h2>Checking out using the Checkout Wizard</h2>
<p>It is available from the Import menu, the New &gt; Project menu and the toolbar 
  of the CVS Repository Exploring perspective. It is also opened when performing 
  a Checkout As from the CVS Repositories view.</p>
<ol>
  <li>Launch the
  <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.file.import(importWizardId=org.eclipse.team.cvs.ui.newProjectCheckout)")'>
    <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="command link">
    Checkout wizard</a>. It is available from the <strong>Import</strong> 
    menu, the <strong>New &gt; Project</strong> menu and the toolbar of the CVS 
    Repository Exploring perspective. It is also opened when performing a Checkout 
    As from the CVS Repositories view. (<strong>Note</strong>: If the CVS capability 
    is disabled, the Checkout wizard may only be available from the <strong>Import</strong> 
    menu).</li>
  <li>Select the desired repository from the list of known repositories or, if 
    the desired repository is not in this list, choose to create a new repository 
    location and click <b>Next</b>.</li>
  <li>If entering a new repository location, enter the repository information 
    and click <b>Next</b> when completed. <b>(Note</b>: this page is the same 
    format as the <a href="tasks-92.htm">Creating a CVS repository location</a> 
    wizard.)</li>
  <li>Either select one or more modules from the list of existing modules or type 
    in the name of the module to be checked out. Entering a name is supported 
    for those situations where obtaining the list of existing modules from the 
    server is impractical or unsupported. You can also enter a dot (.) as the 
    module name if the repository is configured to host a single project at its 
    root. Click <strong>Next</strong> when the module or modules to be checked 
    out are specified.</li>
  <li><em>Optional</em>: Choose whether to check out one or more selected modules as a 
    new projects or into an existing project or folder. If one module is selected 
    and it does not contain a .project file (the Workbench project configuration 
    file), you will also have the option to configure the project using the New 
    Project wizard (in order to make the project a Java project, for instance). 
    Click <strong>Next</strong>.</li>
  <li><em>Optional</em>: For a single project, you can configure the location of the project 
    to be either the default location or a custom location outside the workspace. 
    For multiple projects, you can configure the parent folder where all the projects 
    should be located. Click <strong>Next</strong>.</li>
  <li><em>Optional</em>: Select the tag to check out from and click <strong>Finish</strong>.</li>
</ol>
<h2>Checking out from the CVS Repositories view</h2>
<P>To check out a project from the CVS repositories view to the Workbench: </P>

<ol>
  <li>Switch to the
  <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.perspectives.showPerspective(org.eclipse.ui.perspectives.showPerspective.perspectiveId=org.eclipse.team.cvs.ui.cvsPerspective)")'>
  <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="command link">
  CVS Repository Exploring</a> perspective or add the
  <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.views.showView(org.eclipse.ui.views.showView.viewId=org.eclipse.team.ccvs.ui.RepositoriesView)")'>
  <img src="PLUGINS_ROOT/org.eclipse.help/command_link.png" alt="command link">
  CVS Repositories</a> view to the current perspective.</li>
  <li>In the CVS Repositories view, expand the repository location.</li>
  <li>Expand <b>HEAD</b> and select the folders that you want to add as projects 
    to the Workbench. If you are looking for a folder in a particular version: 
    <ol type="a">
      <li>Expand the <b> Versions</b> category and find the folder name 
        that you want to add to the Workbench.</li>
      <li>Expand the folder to reveal its versions.</li>
    </ol>
	<p>If you are looking for the latest folder in a branch:</p>
    <ol type="a">
      <li>Expand the <b> Branches</b> category.</li>
      <li>Expand the branch that holds the folder that you want to add to the 
        Workbench.</li>
    </ol>
  </li>
  <li>From the pop-up menu for the selected folders, select one of the following: 
    <ol type="a">
      <li><b>Check Out </b> to check out each of the selected folders as a project 
        in the local workspace with the same name as the folder in the repository.</li>
      <li><b>Check Out As...</b> to check out the selected folders into a custom 
        configured project in the local workspace. <em>Note:</em> When multiple 
        folders are selected, this operations only allows the specification of 
        a custom parent location for the new projects.</li>
    </ol>
  </li>
  <li>If <b>Check Out As...</b> was chosen on a single project, one of two possible 
    dialogs is displayed depending on whether the folder in the repository contains 
    a .project file or not. 
    <ol type="a">
      <li>If there is a .project file, the dialog will accept a custom project 
        name and location.</li>
      <li>Otherwise, the dialog will be the New Project wizard which allows full 
        customization of the project (e.g. Java project).</li>
    </ol>
  </li>
</ol>

<p><em>Tip:</em> Any folder, including non-root folders, can be checked out from 
a CVS repository.
</p>
  
<p><img border="0" src="../images/ngrelc.png" alt="Related concepts" ><br>
<a href="../concepts/concepts-26.htm">Team programming with CVS</a><br>
<a href="../concepts/concepts-27c.htm">CVS Repositories</a>
</p>

<p><img border="0" src="../images/ngrelt.png" alt="Related tasks" ><br>
<a href="tasks-96a.htm">Checking out a module from a CVS repository</a><br>
<a href="tasks-96b.htm">Checking out a folder into an existing project</a><br>
<a href="tasks-92.htm">Creating a CVS repository location</a><br>
<a href="tasks-103.htm">Replacing resources in the Workbench</a><br>
<a href="tasks-110.htm">Discovering branch and version tags</a><br>
<a href="tasks-117.htm">Sharing a new project using CVS</a><br>
<a href="tasks-115.htm">Synchronizing with the repository</a>
</p>

<p><img border="0" src="../images/ngrelr.png" alt="Related references" ><br>
  <a href="../reference/ref-47.htm">CVS</a><br>
  <a href="../reference/ref-32.htm">CVS Repositories view</a><br>
  <a href="../reference/ref-40a.htm">CVS Checkout wizard</a></p>



</BODY>
</HTML>
