<!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>Discovering branch and version tags</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>Discovering branch and version tags</H1>

<p><em>Prerequisite:</em>Before you can discover the branch and version tags for 
  a repository, you must have a valid repository location in the CVS Repositories 
  view. </p>
<P>To discover existing branch tags for multiple folders in a single repository 
  location:</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, select a repository location.</li>
  <li>From the pop-up menu for the CVS Repositories view, select <b>Refresh Branches</b>. 
    The Refresh Branches dialog will open (depending on the repository location selected
    listed remote projects can differ):
    <p> <img src="../images/cvs_refresh_branches.png" alt="Refresh Branches dialog" border="0"></p>
  </li>
  <li>In the folder list, select the folders whose tags you would like to refresh. 
    Alternatively, at the bottom of the dialog, you can choose a working set and 
    all remote folders whose names match the name of a project in the working 
    set will become checked.</li>
  <li>Click <b>Finish</b> to discovered the tags for the checked projects. These 
    tags will be added to the repositories view. </li>
</ol>
<P><em>Note:</em> This operation may be long running especially if the number 
  of selected folders is large. </p>
<P><em>Tip</em>: If the above operation does not result in the discovery of any 
  tags, it is probable that the folder in the repository does not have a .project 
  file in it. The .project file is the default file used by the tag discovery 
  process. The file can be changed for individual projects using <strong>Configure 
  Branches and Versions</strong> (see below).</p>
<P>To discover existing branch and version tags for a single project folder: </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 <strong>HEAD</strong> and select the root folder whose tags are to 
    be discovered.</li>
  <li>From the pop-up menu for the CVS Repositories view, select <b>Configure 
    Branches and Versions</b>. The Tag Configuration dialog similar to the one below will open.
    <p> <img src="../images/cvs_configure_branches_and_versions.png" alt="Project Explorer view" border="0"></p>
  </li>
  <li>In the top pane on the left (titled <i>Browse files for tags</i>), expand 
    one or more projects to find a file that is known to have tags that should 
    be added to the CVS Repositories view.</li>
  <li>Select a file in the left top pane. If the file selected has tags defined 
    on it, they will be displayed in the right top pane (titled <i>New tags found 
    in selected files</i>).</li>
  <li>Check or uncheck the tags in the right pane as desired.</li>
  <li>Click <b>Add Checked Tags</b> to add the checked tags to the list of remembered 
    tags.</li>
  <li>Click <b>OK</b> to add the remembered tags to the selected repository location 
    or project.</li>
</ol>
<p><em>Note</em>: You can also set the auto-refresh files by selecting a file 
  in the files pane and clicking<strong> Add Selected Files</strong> in the lower 
  right hand portion of the dialog. </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><br>
<a href="../concepts/concepts-27b.htm">Branches</a><br>
<a href="../concepts/concepts-27.htm">Versions</a><br>
<a href="../concepts/concepts-30.htm">Synchronizing with a CVS repository</a>
</p>


<p><img border="0" src="../images/ngrelt.png" alt="Related tasks" ><br>
<a href="tasks-92.htm">Creating a CVS repository location</a><br>
<a href="tasks-96.htm">Checking out a project from a CVS repository</a><br>
<a href="tasks-117.htm">Sharing a new project using CVS</a>
</p>



</BODY>
</HTML>
