# <sscmget>

Gets files from a Surround SCM repository.

You can get a single file, multiple files, or a repository. A read-only copy of the file is created in the specified directory.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
branch | string | Surround SCM branch name. The default is pulled from the local working directory. | False
bylabel | string | Label to search for when getting a file. If a file version is specified, this parameter is ignored. | False
bytimestamp | string | Timestamp to use when getting files. Format is yyyymmddhh:mm:ss. If `bylabel` is specified, this parameter is ignored. Requires Surround SCM 3.0 or later. | False
destdir | directory | The local directory you want to get the files to. If `file` is a repository, a subrepository with the same name as the repository is created and files are copied to it. If `file` is specified as / or not set, files are copied to the local directory. If not specified, files are copied to the working directory. | 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
force | bool | Force file retrieval from server regardless of the local copy status. The default is false. | False
includeremoved | bool | Include removed files when getting files by label or timestamp. The default is true. Ignored if a label or timestamp is not specified. | False
overwrite | bool | Specifies whether to overwrite local writable files. The default is false. | False
quiet | bool | Do not list repository and local full path of files. The default is false. | False
recursive | bool | Recursively get files and sub-repositories. The default is false. | False
repository | string | Surround SCM repository path. The default is pulled from the local working directory. | False
timestamp | string | Specifies how to set the local file's date/time. Possible values are `current`, `modify` or `checkin`. | False
version | string | The file version to get. Ignored if a filename is not specified in the `file` attribute. | False
writable | bool | Make local file editable or writable. The default is false. | 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
--- | --- | --- | ---
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:

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

- Get all files and repositories from repository 'Mainline/Widget' recursively from the 'Widget 1.0' branch to the working directory setup for user 'administrator'. This call forces the file retrieval from the server even if the local file is current and overwrites any local files that are writable with the server copy.

                  <sscmget
                      serverconnect="localhost:4900"
                      serverlogin="administrator:"
                      file="/"
                      branch="Widget 1.0"
                      repository="Mainline/Widget"
                      recursive="true"
                      force="true"
                      overwrite="true"
                  />

- Get version 1 of the file 'Mainline/Widget/Widget.java' from the 'Widget 1.0' branch to the working directory setup for user 'administrator'. Writable local files are not overwritten, even if they are out of date.

                  <sscmget
                      serverconnect="localhost:4900"
                      serverlogin="administrator:"
                      quiet="true"
                      file="Widget.java"
                      branch="Widget 1.0"
                      repository="Mainline/Widget"
                      overwrite="false"
                      writable="true"
                      version="1"
                  />

- Get all files and repositories labeled with 'Release 1.0.0' (even those removed from Surround) from repository 'Mainline/Widget' recursively from the 'Widget 1.0' branch to the '${build}/src' directory. Writable local files are overwritten with the server copy.

                  <sscmget
                      serverconnect="localhost:4900"
                      serverlogin="administrator:"
                      quiet="true"
                      file="/"
                      branch="Widget 1.0"
                      repository="Mainline/Widget"
                      recursive="true"
                      label="Release 1.0.1"
                      destdir="${build}/src"
                      overwrite="true"
                  />

### Requirements

Assembly: NAnt.Contrib.Tasks (0.91.4312.0)