# <sscmlabel>

Creates file or repository labels for a Surround SCM repository.

Labels provide a way to mark a specific version of a file or repository. You can create labels for single files, multiple files, or all files in a repository. When you create a label, a new entry is created in the history. The file, and the version number, do not change. Existing 'Release 1.0.1' labels on a file will be moved to the tip version of the file.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
label | string | The new label to create. | True
branch | string | Surround SCM branch name. The default is pulled from the local working directory. | False
comment | string | Comment for the label. | False
file | string | File or repository name. Can be / or empty, which means the repository specified by the `repository` attribute or the default repository. | False
overwrite | bool | Overwrite the existing label. The default is false. | False
recursive | bool | Recursively label all files. The default is false. | False
repository | string | Surround SCM repository path. The default is pulled from the local working directory. | False
version | string | The file version to label. Ignored if a filename is not specified in the `file` attribute. | 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
serverconnect | string | The address and port number of the Surround SCM server host computer. Format is server:port. If not entered, the last saved connection parameters are used. | False
serverlogin | string | The username and password used to login to the Surround SCM server. Format is username:password. If not entered, the last saved login parameters are used. | 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
verbose | bool | Determines whether the task should report detailed build log messages. The default is false. | False

### Framework-configurable parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
useruntimeengine | bool | Specifies whether the external program should be executed using a runtime engine, if configured. The default is false. | False

### Nested Elements:

#### <arg>

The command-line arguments for the external program.

Represents a command-line argument.

### 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

- Label all files under the 'Mainline/Widget' repository recursively in the 'Widget 1.0' branch with 'Release 1.0.1' and the given comment.

      <sscmlabel
          serverconnect="localhost:4900"
          serverlogin="administrator:"
          branch="Widget 1.0"
          repository="Mainline/Widget"
          file="readme.txt"
          recursive="true"
          label="Release 1.0.1"
          overwritelabel="false"
          comment="This labels the final build for the release of Widget 1.0.1."
      />

- Label all files under the 'Mainline/Widget' repository recursively in the 'Widget 1.0' branch with 'Release 1.0.1' and no comments.

      <sscmlabel
          serverconnect="localhost:4900"
          serverlogin="administrator:"
          branch="Widget 1.0"
          repository="Mainline/Widget"
          file="readme.txt"
          recursive="true"
          label="Release 1.0.1"
      />

- Label version 4 of the file 'Mainline/Widget/Widget.java' in the 'Widget 1.0' branch with 'Release 1.0.1' and the given comment. An existing 'Release 1.0.1' label on this file to be moved to version 4 of the file.

      <sscmlabel
          serverconnect="localhost:4900"
          serverlogin="administrator:"
          branch="Widget 1.0"
          repository="Mainline/Widget"
          file="readme.txt"
          label="Release 1.0.1"
          overwritelabel=" true"
          comment=" This labels the final build for the release of Widget 1.0.1."
          version=" 4"
      />

### Requirements

Assembly: NAnt.Contrib.Tasks (0.85.2479.0)