<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<html>
<head>
<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
<title>Microsoft Visual SourceSafe(VSS) Tasks</title>
</head>
<body>
<h1>Microsoft Visual SourceSafe Tasks User Manual</h1>
<p>by</p>
<ul>
    <li>Craig Cottingham</li>
    <li>Andrew Everitt</li>
    <li>Balazs Fejes 2</li>
    <li><a href="mailto:Glenn_Twiggs@bmc.com">Glenn_Twiggs@bmc.com</a></li>
    <li>Martin Poeschl (<a href="mailto:mpoeschl@marmot.at">mpoeschl@marmot.at</a>)</li>
    <li>Phillip Wells</li>
    <li>Jon Skeet (<a href="mailto:jon.skeet@peramon.com">jon.skeet@peramon.com</a>)</li>
    <li>Nigel Magnay (<a href="mailto:nigel.magnay@parsec.co.uk">nigel.magnay@parsec.co.uk</a>)</li>
    <li>Gary S. Weaver</li>
    <li>Jesse Stockall</li>
 </ul>
<hr>
<h2>Contents</h2>
<ul>
    <li><a href="#intro">Introduction</a></li>
    <li><a href="#tasks">The Tasks</a></li>
</ul>
<br>
<h2><a name="intro">Introduction</a></h2>
<p>This antlib provides an interface to the
<a href="https://msdn.microsoft.com/ssafe/default.asp" target="_top">Microsoft Visual SourceSafe</a> SCM.
The original tasks (<code>org.apache.tools.ant.taskdefs.optional.vss</code>) have been expanded upon in this antlib.
Some fixes to issues in the original tasks have also been incorporated.</p>
<p>
If you get a CreateProcesss IOError=2 when running these, it means
that ss.exe was not found. Check to see if you can run it from the
command line -you may need to alter your path, or set the <tt>ssdir</tt>
property.</p>
<p>
To use this antlib in your build file, you must first declare it eg:
<blockquote>
<pre>
&lt;project name="myproject" basedir="." 
         default="test" xmlns:vss="antlib:org.apache.ant.vss"&gt;
</pre>
</blockquote>

<h2><a name="tasks">The Tasks</a></h2>

<table border="0" cellspacing="0" cellpadding="3">
    <tr>
        <td><a href="#vss:get">vss:get</a></td>
        <td>Retrieves a copy of the specified VSS file(s).</td>
    </tr>
    <tr>
        <td><a href="#vss:label">vss:label</a></td>
        <td>Assigns a label to the specified version or current version of a file or project.</td>
    </tr>
    <tr>
        <td><a href="#vss:history">vss:history</a></td>
        <td>Shows the history of a file or project in VSS.</td>
    </tr>
    <tr>
        <td><a href="#vss:checkin">vss:checkin</a></td>
        <td>Updates VSS with changes made to a checked out file, and unlocks the VSS master copy.</td>
    </tr>
    <tr>
        <td><a href="#vss:checkout">vss:checkout</a></td>
        <td>Copies a file from the current project to the current folder, for the purpose of editing.</td>
    </tr>
    <tr>
        <td><a href="#vss:add">vss:add</a></td>
        <td>Adds a new file into the VSS Archive</td>
    </tr>
    <tr>
        <td><a href="#vss:cp">vss:cp</a></td>
        <td>Change the current project being used in VSS</td>
    </tr>
    <tr>
        <td><a href="#vss:create">vss:create</a></td>
        <td>Creates a project in VSS.</td>
    </tr>
    <tr>
        <td><a href="#vss:destroy">vss:destroy</a></td>
        <td>Permanently remove a file or project from VSS.</td>
    </tr>
    <tr>
        <td><a href="#vss:move">vss:move</a></td>
        <td>Relocates a subproject from one parent project to another.</td>
    </tr>
    <tr>
        <td><a href="#vss:cloak">vss:cloak</a></td>
        <td>Hides a project from recursive Get, Check Out, Check In, Undo Check Out, and Project Differences commands.</td>
    </tr>
    <tr>
        <td><a href="#vss:decloak">vss:decloak</a></td>
        <td>Removes the cloaked attribute from a project.</td>
    </tr>
    <tr>
        <td><a href="#vss:delete">vss:delete</a></td>
        <td>Removes files and projects from VSS Explorer, and marks them as deleted; the items still exist, however, and can be recovered using the Recover command.</td>
    </tr>
    <tr>
        <td><a href="#vss:recover">vss:recover</a></td>
        <td>Recovers files and projects that have been deleted.</td>
    </tr>
    <tr>
        <td><a href="#vss:locate">vss:locate</a></td>
        <td>Searches through VSS projects for file or project names.</td>
    </tr>
    <tr>
        <td><a href="#vss:status">vss:status</a></td>
        <td>Shows check out information on files.</td>
    </tr>
</table>

<hr>
<h2>Task Descriptions</h2>

<!-- VSSGET -->

<h2><a name="vss:get">vss:get</a></h2>
<h3>Description</h3>
Task to perform GET commands to Microsoft Visual SourceSafe.
<p>If you specify two or more attributes from version, date and
label only one will be used in the order version, date, label.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
     <td>vsspath</td>
     <td>SourceSafe path which specifies the project/file(s) you wish to
         perform the action on.</td>
     <td>Yes</td>
  </tr>
  <tr>
     <td>login</td>
     <td>username[,password] - The username and password needed to get access
         to VSS. Note that you may need to specify both (if you have a password) -
         Ant/VSS will hang if you leave the password out and VSS does not accept
         login without a password. </td>
     <td>No</td>
  </tr>
  <tr>
     <td>localpath</td>
     <td>Override the working directory and get to the specified path</td>
     <td>No</td>
  </tr>
  <tr>
     <td>ssdir</td>
     <td>directory where <code>ss.exe</code> resides. By default the
         task expects it to be in the PATH.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>serverPath</td>
     <td>directory where <code>srcsafe.ini</code> resides.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>writable</td>
     <td>true or false; default false</td>
     <td>No</td>
  </tr>
  <tr>
     <td>recursive</td>
     <td>true or false; default false. Note however that in the SourceSafe UI
     , there is a setting accessed via Tools/Options/GeneralTab called
     &quot;Act on projects recursively&quot;.  If this setting is checked,
     then the recursive attribute is effectively ignored, and the get
     will always be done recursively
     </td>
     <td>No</td>
  </tr>
  <tr>
     <td>version</td>
     <td>a version number to get</td>
     <td rowspan="3">No, only one of these allowed</td>
  </tr>
  <tr>
     <td>date</td>
     <td>a date stamp to get at</td>
  </tr>
  <tr>
     <td>label</td>
     <td>a label to get for</td>
  </tr>
  <tr>
     <td>quiet</td>
     <td>suppress output (off by default)</td>
     <td>No</td>
  </tr>
  <tr>
     <td>autoresponse</td>
     <td>What to respond with (sets the -I option). By default, -I- is
     used; values of Y or N will be appended to this.</td>
     <td>No</td>
  </tr>
  <tr>
    <td>writablefiles</td>
    <td>Behavior when local files are writable. Valid options are: <code>replace</code>, 
        <code>skip</code> and <code>fail</code>; Defaults to <code>fail</code>
        <br><code>skip</code> implies <code>failonerror=false</code></td>
    <td>No</td>
  </tr>
  <tr>
    <td>failonerror</td>
    <td>Stop the buildprocess if ss.exe exits with a returncode of 100. Defaults to true</td>
    <td>No</td>
  </tr>
  <tr>
    <td>filetimestamp</td>
    <td>Set the behavior for timestamps of local files. Valid options are <code>current</code>, 
        <code>modified</code>, or <code>updated</code>. Defaults to <code>current</code>.</td> 
    <td>No</td>
  </tr>
</table>
<p>Note that only one of version, date or label should be specified</p>
<h3>Examples</h3>
<blockquote>
<pre>
&lt;vss:get localPath=&quot;C:\mysrc\myproject&quot;
        recursive=&quot;true&quot;
        label=&quot;Release1&quot;
        login=&quot;me,mypassword&quot;
        vsspath=&quot;$/source/aProject&quot;
        writable=&quot;true&quot;/&gt;
</pre>
</blockquote>
<p>Does a get on the VSS-Project <i>$/source/myproject</i> using the username
<i>me</i> and the password <i>mypassword</i>. It will recursively get the files
which are labeled <i>Release1</i> and write them to the local directory
<i>C:\mysrc\myproject</i>. The local files will be writable.</p>
<hr>

<!-- VSSLABEL -->

<h2><a name="vss:label">vss:label</a></h2>
<h3>Description</h3>
Task to perform LABEL commands to Microsoft Visual SourceSafe.
<p>Assigns a label to the specified version or current version of a file or
project.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
   <tr>
     <th>Attribute</th>
     <th>Values</th>
     <th>Required</th>
   </tr>
  <tr>
     <td>vsspath</td>
     <td>SourceSafe path which specifies the project/file(s) you wish to
         perform the action on.</td>
     <td>Yes</td>
  </tr>
  <tr>
     <td>login</td>
     <td>username[,password] - The username and password needed to get access
         to VSS. Note that you may need to specify both (if you have a password) -
         Ant/VSS will hang if you leave the password out and VSS does not accept
         login without a password. </td>
     <td>No</td>
  </tr>
  <tr>
     <td>ssdir</td>
     <td>directory where <code>ss.exe</code> resides. By default the
         task expects it to be in the PATH.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>serverPath</td>
     <td>directory where <code>srcsafe.ini</code> resides.</td>
     <td>No</td>
  </tr>
   <tr>
      <td>label</td>
      <td>A label to apply to the hierarchy</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>version</td>
      <td>An existing file or project version to label. By default the current
      version is labeled.</td>
      <td>No</td>
   </tr>
   <tr>
      <td>comment</td>
      <td>The comment to use for this label. Empty or '-' for no comment.</td>
      <td>No</td>
   </tr>
  <tr>
     <td>autoresponse</td>
     <td>What to respond with (sets the -I option). By default, -I- is
     used; values of Y or N will be appended to this.</td>
     <td>No</td>
  </tr>
  <tr>
    <td>failonerror</td>
    <td>Stop the buildprocess if ss.exe exits with a returncode of 100. Defaults to true</td>
    <td>No</td>
  </tr>
</table>
<h3>Examples</h3>
<blockquote>
<pre>
&lt;vss:label vsspath=&quot;$/source/aProject&quot;
          login=&quot;me,mypassword&quot;
          label=&quot;Release1&quot;/&gt;
</pre>
</blockquote>
<p>Labels the current version of the VSS project <i>$/source/aProject</i> with
the label <i>Release1</i> using the username <i>me</i> and the password
<i>mypassword</i>.
</p>
<blockquote>
<pre>
&lt;vss:label vsspath=&quot;$/source/aProject/myfile.txt&quot;
          version=&quot;4&quot;
          label=&quot;1.03.004&quot;/&gt;
</pre>
</blockquote>
<p>Labels version 4 of the VSS file <i>$/source/aProject/myfile.txt</i> with the
label <i>1.03.004</i>. If this version already has a label, the operation (and
the build) will fail.
</p>
<hr>

<!-- VSSHISTORY -->

<h2><a name="vss:history">vss:history</a></h2>
<h3>Description</h3>
Task to perform HISTORY commands to Microsoft Visual SourceSafe.
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
     <td>vsspath</td>
     <td>SourceSafe path which specifies the project/file(s) you wish to
         perform the action on.</td>
     <td>Yes</td>
  </tr>
  <tr>
     <td>login</td>
     <td>username[,password] - The username and password needed to get access
         to VSS. Note that you may need to specify both (if you have a password) -
         Ant/VSS will hang if you leave the password out and VSS does not accept
         login without a password. </td>
     <td>No</td>
  </tr>
  <tr>
     <td>ssdir</td>
     <td>directory where <code>ss.exe</code> resides. By default the
         task expects it to be in the PATH.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>serverPath</td>
     <td>directory where <code>srcsafe.ini</code> resides.</td>
     <td>No</td>
  </tr>
  <tr>
    <td>fromDate</td>
    <td>Start date for comparison</td>
    <td>See below</td>
  </tr>
  <tr>
    <td>toDate</td>
    <td>End date for comparison</td>
    <td>See below</td>
  </tr>
  <tr>
    <td>dateFormat</td>
    <td>Format of dates in fromDate and toDate. Used when calculating dates with
      the numdays attribute. This string uses the formatting rules of SimpleDateFormat.
      Defaults to DateFormat.SHORT.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>fromLabel</td>
    <td>Start label for comparison</td>
    <td>No</td>
  </tr>
  <tr>
    <td>toLabel</td>
    <td>Start label for comparison</td>
    <td>No</td>
  </tr>
  <tr>
    <td>numdays</td>
    <td>The number of days for comparison.</td>
    <td>See below</td>
  </tr>
  <tr>
    <td>output</td>
    <td>File to write the diff.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>recursive</td>
    <td>true or false</td>
    <td>No</td>
  </tr>
  <tr>
    <td>style</td>
    <td>brief, codediff, default or nofile. The default is default.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>user</td>
    <td>Name the user whose changes we would like to see</td>
    <td>No</td>
  </tr>
  <tr>
    <td>failonerror</td>
    <td>Stop the buildprocess if ss.exe exits with a returncode of 100. Defaults to true</td>
    <td>No</td>
  </tr>
</table>

<h4>Specifying the time-frame</h4>
<p>There are different ways to specify what time-frame you wish to evaluate:</p>
<ul>
  <li>Changes between two dates: Specify both <code>fromDate</code> and <code>toDate</code> </li>
  <li>Changes before a date: Specify <code>toDate</code></li>
  <li>Changes after a date: Specify <code>fromDate</code></li>
  <li>Changes X Days before a date: Specify <code>toDate</code> and (negative!) <code>numDays</code></li>
  <li>Changes X Days after a date: Specify <code>fromDate</code> and <code>numDays</code></li>
</ul>


<h3>Examples</h3>
<blockquote>
  <pre>
&lt;vss:history vsspath=&quot;$/myProject&quot; recursive=&quot;true&quot;
            fromLabel=&quot;Release1&quot;
            toLabel=&quot;Release2&quot;/&gt;
</pre>
</blockquote>
<p>Shows all changes between &quot;Release1&quot; and &quot;Release2&quot;.</p>

<blockquote>
  <pre>
&lt;vss:history vsspath=&quot;$/myProject&quot; recursive=&quot;true&quot;
            fromDate=&quot;01.01.2001&quot;
            toDate=&quot;31.03.2001&quot;/&gt;
</pre>
</blockquote>
<p>Shows all changes between January 1st 2001 and March 31st 2001 (in Germany, date must be specified according to your locale).</p>

<blockquote>
  <pre>
&lt;tstamp&gt;
  &lt;format property=&quot;to.tstamp&quot; pattern=&quot;M-d-yy;h:mma&quot;/&gt;
&lt;/tstamp&gt;

&lt;vss:history vsspath=&quot;$/myProject&quot; recursive=&quot;true&quot;
            numDays=&quot;-14&quot;
            dateFormat=&quot;M-d-yy;h:mma&quot;
            toDate=&quot;${to.tstamp}&quot;/&gt;
</pre>
</blockquote>
<p>Shows all changes in the 14 days before today.</p>
<hr>

<!-- VSSCHECKIN -->

<h2><a name="vss:checkin">vss:checkin</a></h2>
<h3>Description</h3>
Task to perform CHECKIN commands to Microsoft Visual SourceSafe.
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
     <td>vsspath</td>
     <td>SourceSafe path which specifies the project/file(s) you wish to
         perform the action on.</td>
     <td>Yes</td>
  </tr>
  <tr>
     <td>login</td>
     <td>username[,password] - The username and password needed to get access
         to VSS. Note that you may need to specify both (if you have a password) -
         Ant/VSS will hang if you leave the password out and VSS does not accept
         login without a password. </td>
     <td>No</td>
  </tr>
  <tr>
     <td>localpath</td>
     <td>Override the working directory and get to the specified path</td>
     <td>No</td>
  </tr>
  <tr>
     <td>ssdir</td>
     <td>directory where <code>ss.exe</code> resides. By default the
         task expects it to be in the PATH.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>serverPath</td>
     <td>directory where <code>srcsafe.ini</code> resides.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>writable</td>
     <td>true or false</td>
     <td>No</td>
  </tr>
  <tr>
     <td>recursive</td>
     <td>true or false</td>
     <td>No</td>
  </tr>
  <tr>
     <td>comment</td>
     <td>Comment to use for the files that where checked in.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>autoresponse</td>
     <td>'Y', 'N' or empty. Specify how to reply to questions from VSS.</td>
     <td>No</td>
  </tr>
  <tr>
    <td>failonerror</td>
    <td>Stop the buildprocess if ss.exe exits with a returncode of 100. Defaults to true</td>
    <td>No</td>
  </tr>
</table>

<h3>Examples</h3>
<blockquote>
<pre>
&lt;vss:checkin vsspath=&quot;$/test/test*&quot;
            localpath=&quot;D:\build\&quot;
            comment=&quot;Modified by automatic build&quot;/&gt;
</pre>
</blockquote>
<p>Checks in the file(s) named <i>test*</i> in the project <i>$/test</i> using
the local directory <i>D:\build</i>.</p>
<hr>

<!-- VSSCHECKOUT -->

<h2><a name="vss:checkout">vss:checkout</a></h2>
<h3>Description</h3>
Task to perform CHECKOUT commands to Microsoft Visual SourceSafe.
<p>If you specify two or more attributes from version, date and
label only one will be used in the order version, date, label.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
     <td>vsspath</td>
     <td>SourceSafe path which specifies the project/file(s) you wish to
         perform the action on.</td>
     <td>Yes</td>
  </tr>
  <tr>
     <td>login</td>
     <td>username[,password] - The username and password needed to get access
         to VSS. Note that you may need to specify both (if you have a password) -
         Ant/VSS will hang if you leave the password out and VSS does not accept
         login without a password. </td>
     <td>No</td>
  </tr>
  <tr>
     <td>localpath</td>
     <td>Override the working directory and get to the specified path</td>
     <td>No</td>
  </tr>
  <tr>
     <td>ssdir</td>
     <td>directory where <code>ss.exe</code> resides. By default the
         task expects it to be in the PATH.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>serverPath</td>
     <td>directory where <code>srcsafe.ini</code> resides.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>writable</td>
     <td>true or false</td>
     <td>No</td>
  </tr>
  <tr>
     <td>recursive</td>
     <td>true or false</td>
     <td>No</td>
  </tr>
  <tr>
     <td>version</td>
     <td>a version number to get</td>
     <td rowspan="3">No, only one of these allowed</td>
  </tr>
  <tr>
     <td>date</td>
     <td>a date stamp to get at</td>
  </tr>
  <tr>
     <td>label</td>
     <td>a label to get for</td>
  </tr>
  <tr>
    <td>writablefiles</td>
    <td>Behavior when local files are writable. Valid options are: <code>replace</code>, 
        <code>skip</code> and <code>fail</code>; Defaults to <code>fail</code>
        <br><code>skip</code> implies <code>failonerror=false</code></td>
    <td>No</td>
  </tr>
  <tr>
    <td>failonerror</td>
    <td>Stop the buildprocess if ss.exe exits with a returncode of 100. Defaults to true</td>
    <td>No</td>
  </tr>
  <tr>
    <td>filetimestamp</td>
    <td>Set the behavior for timestamps of local files. Valid options are <code>current</code>, 
        <code>modified</code>, or <code>updated</code>. Defaults to <code>current</code>.</td> 
    <td>No</td>
  </tr>
  <tr>
    <td>getlocalcopy</td>
    <td>Set the behavior to retrieve local copies of the files. Defaults to true.</td> 
    <td>No</td>
  </tr>
</table>

<h3>Examples</h3>
<blockquote>
<pre>
&lt;vss:checkout vsspath=&quot;$/test&quot;
             localpath=&quot;D:\build&quot;
             recursive=&quot;true&quot;
             login=&quot;me,mypass&quot;/&gt;
</pre>
</blockquote>
<p>Does a recursive checkout of the project <i>$/test</i> to the directory D:\build.
</p>
<hr>

<!-- VSSADD -->

<h2><a name="vss:add">vss:add</a></h2>
<h3>Description</h3>
Task to perform ADD commands to Microsoft Visual SourceSafe.
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
     <td>localpath</td>
     <td>Specify the local file(s) to add to VSS</td>
     <td>Yes</td>
  </tr>
  <tr>
     <td>login</td>
     <td>username[,password] - The username and password needed to get access
         to VSS. Note that you may need to specify both (if you have a password) -
         Ant/VSS will hang if you leave the password out and VSS does not accept
         login without a password. </td>
     <td>No</td>
  </tr>
  <tr>
     <td>ssdir</td>
     <td>directory where <code>ss.exe</code> resides. By default the
         task expects it to be in the PATH.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>serverPath</td>
     <td>directory where <code>srcsafe.ini</code> resides.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>writable</td>
     <td>true or false</td>
     <td>No</td>
  </tr>
  <tr>
     <td>recursive</td>
     <td>true or false</td>
     <td>No</td>
  </tr>
  <tr>
     <td>comment</td>
     <td>Comment to use for the files that where checked in.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>autoresponse</td>
     <td>'Y', 'N' or empty. Specify how to reply to questions from VSS.</td>
     <td>No</td>
  </tr>
  <tr>
    <td>failonerror</td>
    <td>Stop the buildprocess if ss.exe exits with a returncode of 100. Defaults to true</td>
    <td>No</td>
  </tr>
</table>

<h3>Examples</h3>
<blockquote>
<pre>
&lt;vss:add localpath=&quot;D:\build\build.00012.zip&quot;
            comment=&quot;Added by automatic build&quot;/&gt;
</pre>
</blockquote>
<p>Add the file named build.00012.zip into the project current working
directory (see vsscp).</p>
<hr>

<!-- VSSCP -->

<h2><a name="vss:cp">vss:cp</a></h2>
<h3>Description</h3>
<p>Task to perform CP (Change Project) commands to Microsoft Visual SourceSafe.</p>
<p>This task is typically used before a VssAdd in order to set the target project</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
     <td>vsspath</td>
     <td>SourceSafe path which specifies the project you wish to
         make the current project.</td>
     <td>Yes</td>
  </tr>
  <tr>
     <td>login</td>
     <td>username[,password] - The username and password needed to get access
         to VSS. Note that you may need to specify both (if you have a password) -
         Ant/VSS will hang if you leave the password out and VSS does not accept
         login without a password. </td>
     <td>No</td>
  </tr>
  <tr>
     <td>ssdir</td>
     <td>directory where <code>ss.exe</code> resides. By default the
         task expects it to be in the PATH.</td>
     <td>No</td>
  </tr>
  <tr>
     <td>serverPath</td>
     <td>directory where <code>srcsafe.ini</code> resides.</td>
     <td>No</td>
  </tr>
  <tr>
    <td>failonerror</td>
    <td>Stop the buildprocess if ss.exe exits with a returncode of 100. Defaults to true</td>
    <td>No</td>
  </tr>
</table>

<h3>Examples</h3>
<blockquote>
<pre>
&lt;vss:cp vsspath=&quot;$/Projects/ant&quot;/&gt;
</pre>
</blockquote>
<p>Sets the current VSS project to <i>$/Projects/ant</i>.</p>
<hr>

<!-- VSSCREATE -->

 <h2><a name="vss:create">vss:create</a></h2>
 <h3>Description</h3>
 Task to perform CREATE commands to Microsoft Visual Source Safe.
 <p>Creates a new project in VSS.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
    <td>login</td>
    <td>username,password</td>
    <td>No</td>
  </tr>
  <tr>
    <td>vsspath</td>
    <td>SourceSafe path of project to be created</td>
    <td>Yes</td>
  </tr>
  <tr>
    <td>ssdir</td>
    <td>directory where <code>ss.exe</code> resides. By default the task expects it to be in the PATH.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>quiet</td>
    <td>suppress output (off by default)</td>
    <td>No</td>
   </tr>
  <tr>
    <td>failOnError</td>
    <td>fail if there is an error creating the project (true by default)</td>
    <td>No</td>
  </tr>
  <tr>
    <td>autoresponse</td>
    <td>What to respond with (sets the -I option). By default, -I- is used; values of Y or N will be appended to this.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>comment</td>
    <td>The comment to use for this label. Empty or '-' for no comment.</td>
    <td>No</td>
  </tr>
</table>
<h3>Examples</h3>
<blockquote>
<pre>
&lt;vss:create vsspath=&quot;$/existingProject/newProject&quot;/&gt;
</pre>
</blockquote>
<p>Creates the VSS-Project <i>$/existingProject/newProject</i>.</p>
<!-- vss:destroy -->
 <h2><a name="vss:destroy">vss:destroy</a></h2>
 <h3>Description</h3>
 Task to perform DESTROY commands to Microsoft Visual Source Safe.
 <p>Permanently removes a project or file in VSS.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
    <td>login</td>
    <td>username,password</td>
    <td>No</td>
  </tr>
  <tr>
    <td>vsspath</td>
    <td>SourceSafe path of project to be removed</td>
    <td>Yes</td>
  </tr>
  <tr>
    <td>ssdir</td>
    <td>directory where <code>ss.exe</code> resides. By default the task expects it to be in the PATH.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>quiet</td>
    <td>suppress output (off by default)</td>
    <td>No</td>
   </tr>
  <tr>
    <td>failOnError</td>
    <td>fail if there is an error creating the project (true by default)</td>
    <td>No</td>
  </tr>
  <tr>
    <td>autoresponse</td>
    <td>What to respond with (sets the -I option). By default, -I- is used; values of Y or N will be appended to this.</td>
    <td>No</td>
  </tr>
</table>
<h3>Examples</h3>
<blockquote>
<pre>
&lt;vss:destroy vsspath=&quot;$/existingProject/oldProject&quot;/&gt;
</pre>
</blockquote>
<p>Permanently removes the VSS-Project <i>$/existingProject/oldProject</i>.</p>

<!-- vss:move -->
 <h2><a name="vss:move">vss:move</a></h2>
 <h3>Description</h3>
 Task to perform MOVE commands to Microsoft Visual Source Safe.
 <p>Moves a project or file in VSS.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
    <td>login</td>
    <td>username,password</td>
    <td>No</td>
  </tr>
  <tr>
    <td>vsspath</td>
    <td>SourceSafe path of project to be moved</td>
    <td>Yes</td>
  </tr>
  <tr>
    <td>ssdir</td>
    <td>directory where <code>ss.exe</code> resides. By default the task expects it to be in the PATH.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>quiet</td>
    <td>suppress output (off by default)</td>
    <td>No</td>
   </tr>
  <tr>
    <td>failOnError</td>
    <td>fail if there is an error creating the project (true by default)</td>
    <td>No</td>
  </tr>
  <tr>
    <td>autoresponse</td>
    <td>What to respond with (sets the -I option). By default, -I- is used; values of Y or N will be appended to this.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>destination</td>
    <td>location in VSS to move project specified by vsspath to.</td>
    <td>Yes</td>
  </tr>
</table>
<h3>Examples</h3>
<blockquote>
<pre>
 &lt;vss:move
  	  vsspath="$/${vss-project}/sub2"
	  destination="$/${vss-project}/sub1"
  	  login="Guest,"
  	/&gt;
</pre>
</blockquote>
<p>Moves the VSS-Project <i>$/${vss-project}/sub2</i> to <i>$/${vss-project}/sub1/sub2</i>.</p>

<!-- vss:cloak -->
 <h2><a name="vss:cloak">vss:cloak</a></h2>
 <h3>Description</h3>
 Task to perform CLOAK commands to Microsoft Visual Source Safe.
 <p>Hides a project from recursive Get, Check Out, Check In, Undo Check Out, and Project Differences commands.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
    <td>login</td>
    <td>username,password</td>
    <td>No</td>
  </tr>
  <tr>
    <td>vsspath</td>
    <td>SourceSafe path of project to be cloaked</td>
    <td>Yes</td>
  </tr>
  <tr>
    <td>ssdir</td>
    <td>directory where <code>ss.exe</code> resides. By default the task expects it to be in the PATH.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>quiet</td>
    <td>suppress output (off by default)</td>
    <td>No</td>
   </tr>
</table>
<h3>Examples</h3>
<blockquote>
<pre>
 &lt;vss:cloak
  	  vsspath="$/${vss-project}"
  	  login="Guest,"
  	/&gt;
</pre>
</blockquote>
<p>Cloaks the VSS-Project <i>$/${vss-project}</i>.</p>

<!-- vss:decloak -->
 <h2><a name="vss:decloak">vss:decloak</a></h2>
 <h3>Description</h3>
 Task to perform DECLOAK commands to Microsoft Visual Source Safe.
 <p>Removes the cloaked attribute from a project.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
    <td>login</td>
    <td>username,password</td>
    <td>No</td>
  </tr>
  <tr>
    <td>vsspath</td>
    <td>SourceSafe path of project to be decloaked</td>
    <td>Yes</td>
  </tr>
  <tr>
    <td>ssdir</td>
    <td>directory where <code>ss.exe</code> resides. By default the task expects it to be in the PATH.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>quiet</td>
    <td>suppress output (off by default)</td>
    <td>No</td>
   </tr>
</table>
<h3>Examples</h3>
<blockquote>
<pre>
 &lt;vss:decloak
  	  vsspath="$/${vss-project}"
  	  login="Guest,"
  	/&gt;
</pre>
</blockquote>
<p>Decloaks the VSS-Project <i>$/${vss-project}</i>.</p>

<!-- vss:delete -->
 <h2><a name="vss:delete">vss:delete</a></h2>
 <h3>Description</h3>
 Task to perform DELETE commands to Microsoft Visual Source Safe.
 <p>Removes files and projects from VSS Explorer, and marks them as deleted; the items still exist, however, and can be recovered using the Recover command.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
    <td>login</td>
    <td>username,password</td>
    <td>No</td>
  </tr>
  <tr>
    <td>vsspath</td>
    <td>SourceSafe path of project or file to be deleted</td>
    <td>Yes</td>
  </tr>
  <tr>
    <td>ssdir</td>
    <td>directory where <code>ss.exe</code> resides. By default the task expects it to be in the PATH.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>quiet</td>
    <td>suppress output (off by default)</td>
    <td>No</td>
  </tr>
  <tr>
    <td>failOnError</td>
    <td>fail if there is an error creating the project (true by default)</td>
    <td>No</td>
  </tr>
  <tr>
    <td>autoresponse</td>
    <td>What to respond with (sets the -I option). By default, -I- is used; values of Y or N will be appended to this.</td>
    <td>No</td>
  </tr>
</table>
<h3>Examples</h3>
<blockquote>
<pre>
 &lt;vss:delete
  	  vsspath="$/${vss-project}"
  	  login="Guest,"
  	/&gt;
</pre>
</blockquote>
<p>Deletes the VSS-Project <i>$/${vss-project}</i>.</p>

<!-- vss:recover -->
 <h2><a name="vss:recover">vss:recover</a></h2>
 <h3>Description</h3>
 Task to perform RECOVER commands to Microsoft Visual Source Safe.
 <p>Recovers files and projects that have been deleted.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
    <td>login</td>
    <td>username,password</td>
    <td>No</td>
  </tr>
  <tr>
    <td>vsspath</td>
    <td>SourceSafe path of project or file to be recovered</td>
    <td>Yes</td>
  </tr>
  <tr>
    <td>ssdir</td>
    <td>directory where <code>ss.exe</code> resides. By default the task expects it to be in the PATH.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>quiet</td>
    <td>suppress output (off by default)</td>
    <td>No</td>
  </tr>
  <tr>
    <td>failOnError</td>
    <td>fail if there is an error creating the project (true by default)</td>
    <td>No</td>
  </tr>
  <tr>
    <td>autoresponse</td>
    <td>What to respond with (sets the -I option). By default, -I- is used; values of Y or N will be appended to this.</td>
    <td>No</td>
  </tr>
</table>
<h3>Examples</h3>
<blockquote>
<pre>
 &lt;vss:recover
  	  vsspath="$/${vss-project}"
  	  login="Guest,"
  	/&gt;
</pre>
</blockquote>
<p>Recovers the VSS-Project <i>$/${vss-project}</i>.</p>

<!-- vss:locate -->
 <h2><a name="vss:locate">vss:locate</a></h2>
 <h3>Description</h3>
 Task to perform LOCATE commands to Microsoft Visual Source Safe.
 <p>Locates files and projects in VSS.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
    <td>login</td>
    <td>username,password</td>
    <td>No</td>
  </tr>
  <tr>
    <td>vsspath</td>
    <td>SourceSafe path of project or file to be recovered</td>
    <td>Yes</td>
  </tr>
  <tr>
    <td>ssdir</td>
    <td>directory where <code>ss.exe</code> resides. By default the task expects it to be in the PATH.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>quiet</td>
    <td>suppress output (off by default)</td>
    <td>No</td>
  </tr>
  <tr>
    <td>failOnError</td>
    <td>fail if there is an error creating the project (true by default)</td>
    <td>No</td>
  </tr>
  <tr>
    <td>autoresponse</td>
    <td>What to respond with (sets the -I option). By default, -I- is used; values of Y or N will be appended to this.</td>
    <td>No</td>
  </tr>
</table>
<h3>Examples</h3>
<blockquote>
<pre>
 &lt;vss:locate
  	  vsspath="$/${vss-project}"
  	  login="Guest,"
  	/&gt;
</pre>
</blockquote>
<p>Locates the VSS-Project <i>$/${vss-project}</i>.</p>

<!-- vss:status -->
 <h2><a name="vss:status">vss:status</a></h2>
 <h3>Description</h3>
 Task to perform STATUS commands to Microsoft Visual Source Safe.
 <p>Shows check out information on files VSS.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <th>Attribute</th>
    <th>Values</th>
    <th>Required</th>
  </tr>
  <tr>
    <td>login</td>
    <td>username,password</td>
    <td>No</td>
  </tr>
  <tr>
    <td>user</td>
    <td>The user to search for files for.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>vsspath</td>
    <td>SourceSafe path of project or file to be recovered</td>
    <td>Yes</td>
  </tr>
  <tr>
    <td>ssdir</td>
    <td>directory where <code>ss.exe</code> resides. By default the task expects it to be in the PATH.</td>
    <td>No</td>
  </tr>
  <tr>
    <td>quiet</td>
    <td>suppress output (off by default)</td>
    <td>No</td>
  </tr>
  <tr>
    <td>failOnError</td>
    <td>fail if there is an error creating the project (true by default)</td>
    <td>No</td>
  </tr>
  <tr>
    <td>autoresponse</td>
    <td>What to respond with (sets the -I option). By default, -I- is used; values of Y or N will be appended to this.</td>
    <td>No</td>
  </tr>
</table>
<h3>Examples</h3>
<blockquote>
<pre>
 &lt;vss:status
	  vsspath=&quot;$/${vss-project}&quot;
	  login=&quot;Guest,&quot;
      user=&quot;Guest&quot;
	/&gt;
</pre>
</blockquote>
<p>Locates the VSS-Project <i>$/${vss-project}</i>.</p>
<hr>

<!-- Footer -->
</body>
</html>
