# VcsChange

Represents a commit that is attached to an issue.

Extends [AbstractVcsItem](v1-AbstractVcsItem.html).

Available since 2018.1.38923

## Properties

| Name | Type | Description |
| --- | --- | --- |
| becomesRemoved |  Boolean  | Read-only.  When `true`, the entity is removed in the current transaction. Otherwise, `false`. This property can become `true` only in on-change rules when the rule is triggered on the removal of an issue or an article. In the rule code, the `runOn` rule property must contain the `removal` parameter set to `true`.             Available since 2017.4.37915      ```JAVASCRIPT runOn: {removal: true} ```    |
| branch |  String  | Read-only.  The name of the branch that the VCS change was committed to.             Available since 2018.1.38923    |
| changesProcessors |  [Set](v1-Set.html).<[ChangesProcessor](v1-ChangesProcessor.html)>  | Read-only.  The list of change processors that the VCS change can be retrieved from.             Available since 2018.1.38923    |
| created |  Number  | Read-only.  The date when the change was applied, as returned by the VCS.             Available since 2018.1.39547    |
| date |  Number  | Read-only.  The date when the change was applied, as returned by the VCS. Use `VcsChange.created` instead.             Available since 2018.1.38923    |
| extensionProperties |  Object  |  The object containing extension properties for this entity and their values. Extension properties are custom properties that might be added to core YouTrack entities by an app. For details about extension properties, see [Extension Properties](apps-extension-properties.html).             Available since 2024.3      ```JAVASCRIPT const entities = require('@jetbrains/youtrack-scripting-api/entities');  exports.rule = entities.Issue.action({     command: 'test',     action: function (ctx) {         const printValues = () => {             return 'stringProp:' + ctx.issue.extensionProperties.stringProp + ';'                 + 'integerProp:' + ctx.issue.extensionProperties.integerProp + ';'                 + 'booleanProp:' + ctx.issue.extensionProperties.booleanProp + ';'                 + 'issueProp:' + ctx.issue.extensionProperties.issueProp?.id + ';'                 + 'issuesProp:' + ctx.issue.extensionProperties.issuesProp?.first()?.id + ';'         }         ctx.issue.addComment(printValues());     } }); ```    |
| fetched |  Number  | Read-only.  The date when the VCS change was retrieved from the change processor.             Available since 2018.1.39547    |
| id |  Number  | Read-only.  A unique identifier. Used by some CI servers in addition to version.             Available since 2018.1.38923    |
| isNew |  Boolean  | Read-only.  This property is always `false` for VCS changes due to technical limitations. To check whether a commit was added to an issue in the current transaction, use `ctx.issue.vcsChanges.added.isNotEmpty()`.             Available since 2018.2.42351    |
| text |  String  | Read-only.  The commit message or pull request description that was provided when the change was applied to the VCS.             Available since 2018.1.38923    |
| user |  [User](v1-User.html)  | Read-only.  The user who authored the VCS change.             Available since 2018.1.38923    |
| userName |  String  | Read-only.  The name of the change author, as returned by the VCS.             Available since 2018.1.38923    |
| version |  String  | Read-only.  The version number of the change. For a Git-based VCS, the revision hash.             Available since 2018.1.38923    |

## Methods

### findByExtensionProperties

```JAVASCRIPT
static findByExtensionProperties(extensionPropertiesQuery)
```

Searches for VcsChange entities with extension properties that match the specified query.

Available since 2024.3.43260

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | extensionPropertiesQuery |  Object  |  The extension properties query, defined as a set of key-value pairs representing properties and their corresponding values.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  [Set](v1-Set.html).<[VcsChange]()>  |  The set of VcsChange entities that contain the specified extension properties.                 |

Example
: ```JAVASCRIPT
: {
: property1: "value1",
: property2: "value2"
: }
: ```

### becomes

```JAVASCRIPT
becomes(fieldName, expected)
```

Checks whether a field is set to an expected value in the current transaction.

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | fieldName |  string  |  The name of the field to check.                     |
: | expected |  string  |  The expected value.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  boolean  |  If the field is set to the expected value, returns `true`.                 |

### canBeReadBy

```JAVASCRIPT
canBeReadBy(fieldName, user)
```

Checks whether a user has permission to read the field.

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | fieldName |  string  |  The name of the field.                     |
: | user |  [User](v1-User.html)  |  The user for whom the permission to read the field is checked.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  boolean  |  If the user can read the field, returns `true`.                 |

### canBeWrittenBy

```JAVASCRIPT
canBeWrittenBy(fieldName, user)
```

Checks whether a user has permission to update the field.

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | fieldName |  string  |  The name of the field.                     |
: | user |  [User](v1-User.html)  |  The user for whom the permission to update the field is checked.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  boolean  |  If the user can update the field, returns `true`.                 |

### extractCommands

```JAVASCRIPT
extractCommands(user)
```

Extracts commands from vcs change on behalf of provided user

Available since 2024.4.52947

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | user |  [User](v1-User.html)  |  The user to act as.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  Array  |  List of commands that can be extracted from vcs change by provided user                 |

### getUrl

```JAVASCRIPT
getUrl(processor)
```

Returns the URL for a specific VCS change.

Available since 2021.2

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | processor |  [ChangesProcessor](v1-ChangesProcessor.html)  |  The entity that retrieved the VCS change and created its representation in YouTrack.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  String  |  The URL of the VCS change.                 |

### is

```JAVASCRIPT
is(fieldName, expected)
```

Checks whether a field is equal to an expected value.

Available since 2019.2.55603

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | fieldName |  string  |  The name of the field to check.                     |
: | expected |  string  |  The expected value.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  boolean  |  If the field is equal to the expected value, returns `true`.                 |

### isChanged

```JAVASCRIPT
isChanged(fieldName)
```

Checks whether the value of a field is changed in the current transaction.

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | fieldName |  string  |  The name of the field to check.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  boolean  |  If the value of the field is changed in the current transaction, returns `true`.                 |

### isVisibleTo

```JAVASCRIPT
isVisibleTo(user)
```

Checks whether the specified user has access to view the VCS change.

Available since 2020.1.1331

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | user |  [User](v1-User.html)  |  The user to check.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  Boolean  |  When `true`, the specified user has access to view the VCS change. Otherwise, `false`.                 |

### oldValue

```JAVASCRIPT
oldValue(fieldName)
```

Returns the previous value of a single-value field before an update was applied. If the field is not changed in the transaction, returns `null`.

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | fieldName |  string  |  The name of the field.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  Object  |  If the field is changed in the current transaction, the previous value of the field. Otherwise, `null`.                 |

### required

```JAVASCRIPT
required(fieldName, message)
```

Asserts that a value is set for a field. If a value for the required field is not set, the specified message is displayed in the user interface.

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | fieldName |  string  |  The name of the field to check.                     |
: | message |  string  |  The message that is displayed to the user that describes the field requirement.                     |

### was

```JAVASCRIPT
was(fieldName, expected)
```

Checks whether a field was equal to an expected value prior to the current transaction.

Available since 2019.2.55603

Parameters
: | Name | Type | Description |
: | --- | --- | --- |
: | fieldName |  string  |  The name of the field to check.                     |
: | expected |  string  |  The expected value.                     |

Return Value
: | Type | Description |
: | --- | --- |
: |  boolean  |  If the field was equal to the expected value, returns `true`.                 |

## See also

[AbstractVcsItem](v1-AbstractVcsItem.html) [Set](v1-Set.html) [ChangesProcessor](v1-ChangesProcessor.html) [Extension Properties](apps-extension-properties.html) [User](v1-User.html)

