# Troubleshooting Deployment Definition

> Solve common issues when running commands against a Deployment Definition.

## Possible Errors

There are a few errors that can occur when trying to use commands with a [Deployment Definition].

1. File intersection.
   1. With another file.
   2. With an excluded file.
2. Multiple Deployment Definitions in the same directory.

## File intersection

Using a Deployment Definition is a separate logical grouping than files or directories.

### With Another File

If the set of files a Deployment Definition is responsible for intersects with other items in the command, the following error will occur:

Command: `ugs deploy Assets/DeployableAssets/CloudCode/CloudCode.ddef Assets/DeployableAssets/CloudCode/scriptA.js`

```text
Assets/
├── DeployableAssets/
│   ├── CloudCode/
│   │   ├── CloudCode.ddef
│   │   ├── scriptA.js
│   │   ├── scriptB.js
│   │   └── Tests/
│   │       ├── scriptA_test.js
│   │       └── scriptB_test.js
```

```text
[Error]:
    A conflict was found between the deployment definitions and the other arguments:
        'Assets/DeployableAssets/CloudCode/scriptA.js' [CloudCode.ddef]
```

### With an Excluded File

If the set of excluded files for a Deployment Definition intersects with other items in the command, the following error will occur:

Command: `ugs deploy Assets/DeployableAssets/CloudCode/CloudCode.ddef Assets/DeployableAssets/CloudCode/scriptA.js`

```text
Assets/
├── DeployableAssets/
│   ├── CloudCode/
│   │   ├── CloudCode.ddef
│   │   ├── scriptA.js
│   │   ├── scriptB.js
│   │   └── Tests/
│   │       ├── scriptA_test.js
│   │       └── scriptB_test.js
```

```text
[Error]:
    A conflict was found between the deployment definition exclusions and the other arguments:
        'Assets/DeployableAssets/CloudCode/Tests/scriptA_test.js' [CloudCode.ddef]
```

## Multiple Deployment Definitions in a Directory

Given that a Deployment Definition is responsible for a whole directory, having multiple Deployment Definition
in the same directory will cause an error when trying to execute a command that involves them.

Command: `ugs deploy Assets/DeployableAssets/CloudCode/CloudCode.ddef Assets/DeployableAssets/CloudCode/scriptA.js`

```text
Assets/
├── DeployableAssets/
│   ├── CloudCode/
│   │   ├── CloudCode1.ddef
│   │   ├── CloudCode2.ddef
│   │   ├── scriptA.js
│   │   ├── scriptB.js
│   │   └── Tests/
│   │       ├── scriptA_test.js
│   │       └── scriptB_test.js
```

```text
[Error]:
    Multiple deployment definitions were found in the directory 'Assets/DeployableAssets/CloudCode': 'CloudCode1.ddef' and 'CloudCode2.ddef'
```

## Fetch with --reconcile

As mentioned in the [commands] page, it is not possible to use the `--reconcile` with the [fetch] command when using Deployment Definition.

Attempting to do so will generate the following error message:

```text
[Error]:
    Reconcile is not compatible with Deployment Definitions
```

[Deployment Definition]: ./what-is-deployment-definition

[commands]: ./commands-for-deployment-definition

[fetch]: ../base-commands/fetch
