# <cvs-tag>

[This is preliminary documentation and subject to change.]

Tags all local sources with the specified tag.

This differs from the <cvs-rtag> task in that it acts on references to the cvs files contained in your local filesystem. As such the sticky tags and local revisions can be considered in commits. It also allows you to verify that all local files have been checked in before a tag is performed.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
tag | string | The name of the tag to assign or remove. | True
act-on-date | datetime | Indicates the revision date of the file that the tag should be applied to. | False
act-on-tag | string | Indicates the repository `tag` that is acted on for the tag command. Note if `move-if-exists` is true then the tag specified is moved to the revision of the file on the HEAD of the branch specified. | False
fail-if-modified | bool | Indicates whether the head revision should be used if the `act-on-tag` or the `act-on-date` tags are not found. | False
force-head | bool | Indicates whether the head revision should be used if the revision specified by `act-on-tag` or the `act-on-date` tags are not found. | False
move-if-exists | bool | Indicates whether the tag specified in `tag` should be moved to the current file revision. If the tag does not exist then it is created. | False
recursive | bool | If a directory is specified indicates whether sub-directories should also be processed. | False
remove | bool | Indicates whether the tag specified in `tag` should be removed or not. | False
commandline | string | Command-line arguments for the program. The command line arguments are used to specify any cvs command options that are not available as attributes. These are appended after the command itself and are additive to whatever attributes are currently specified. | False
compressionlevel | int | Compression level to use for all net traffic. This should be a value from 1-9. NOTE: This is not available on sharpcvslib. | False
cvsfullpath | file | The full path to the cvs binary used. The cvs tasks will attempt to "guess" the location of your cvs binary based on your path. If the task is unable to resolve the location, or resolves it incorrectly this can be used to manually specify the path. | False
cvsroot | string | The cvs root variable has the following components:
    [protocol]:[username]@[servername]:[server path]
protocol: ext, pserver, ssh (sharpcvslib); if you are not using sharpcvslib consult your cvs documentation. username: [username] servername: cvs.sourceforge.net server path: /cvsroot/nant | False
cvsrsh | file | The executable to use for ssh communication. | False
destination | directory | Destination directory for the local sandbox. If destination is not specified then the current directory is used. | False
failonerror | bool | Determines if task failure stops the build, or is just reported. The default is true. | False
if | bool | If true then the task will be executed; otherwise, skipped. The default is true. | False
passfile | file | The full path to the cached password file. If not specified then the environment variables are used to try and locate the file. | False
password | string | Deprecated. The password for logging in to the repository. | False
quiet | bool | Indicates if the output from the cvs command should be supressed. The default is false. | False
readonly | bool | true if the sandbox files should be checked out in read only mode. The default is false. | False
readwrite | bool | true if the sandbox files should be checked out in read/write mode. The default is true. | False
reallyquiet | bool | Indicates if the output from the cvs command should be stopped. The default is false. | False
timeout | int | The maximum amount of time the application is allowed to execute, expressed in milliseconds. Defaults to no time-out. | False
unless | bool | Opposite of `if`. If false then the task will be executed; otherwise, skipped. The default is false. | False
usesharpcvslib | bool | true if the SharpCvsLib binaries that come bundled with NAnt should be used to perform the cvs commands, false otherwise. You may also specify an override value for all cvs tasks instead of specifying a value for each. To do this set the property `sourcecontrol.usesharpcvslib` to false. If you choose not to use SharpCvsLib to checkout from cvs you will need to include a cvs.exe binary in your path. | False
verbose | bool | Determines whether the task should report detailed build log messages. The default is false. | False

### Framework-configurable parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
managed | ManagedExecution | Specifies whether the external program should be treated as a managed application, possibly forcing it to be executed under the currently targeted version of the CLR. | False
useruntimeengine | bool | Deprecated. Specifies whether the external program is a managed application which should be executed using a runtime engine, if configured. The default is false. | False

### Nested Elements:

#### <fileset>

Used to specify the version control system (VCS) files that are going to be acted on.

#### </fileset>

#### <arg>

The command-line arguments for the external program.

Represents a command-line argument.

When passed to an external application, the argument will be quoted when appropriate. This does not apply to the `line` parameter, which is always passed as is.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
dir | directory | The value for a directory-based command-line argument; will be replaced with the absolute path of the directory. | False
file | file | The name of a file as a single command-line argument; will be replaced with the absolute filename of the file. | False
if | bool | Indicates if the argument should be passed to the external program. If true then the argument will be passed; otherwise, skipped. The default is true. | False
line | string | List of command-line arguments; will be passed to the executable as is. | False
path | <path> | The value for a PATH-like command-line argument; you can use `:` or `;` as path separators and NAnt will convert it to the platform's local conventions, while resolving references to environment variables. | False
unless | bool | Indicates if the argument should not be passed to the external program. If false then the argument will be passed; otherwise, skipped. The default is false. | False
value | string | A single command-line argument; can contain space characters. | False

### Nested Elements:

#### <path>

Sets a single command-line argument and treats it like a PATH - ensures the right separator for the local platform is used.

#### </path>

### Examples

- A single command-line argument containing a space character.

      <arg value="-l -a" />

- Two separate command-line arguments.

      <arg line="-l -a" />

- A single command-line argument with the value `\dir;\dir2;\dir3` on DOS-based systems and `/dir:/dir2:/dir3` on Unix-like systems.

      <arg path="/dir;/dir2:\dir3" />

#### </arg>

### Examples

- Tag NAnt sources remotely.

      <cvs-tag
          cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
          destination="."
          tag="v0_8_4"
           />

- Remove a tag from the remote repository.

      <cvs-tag
          cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant"
          destination="."
          tag="v0_8_4"
          remove="true"
          fail-if-modified="true"
           />

### Requirements

Assembly: NAnt.SourceControlTasks (0.91.3881.0)