In the following features, Gearset has to determine which metadata items in the first comparison result table are essentially the same for selection in a subsequent comparison result:
When we do this, there are metadata items with distinct difference types that we treat as the same change that users want to identify as the same.
The behavior is different for different metadata types:
profile and permissions,
custom object and subcomponents, and
all other metadata types
Note that these behaviors have changed in December 2021 so previous runs may have a slightly different results.
Profile and permissions
For profile and permissions the difference type is independent (so a changed
permission and a new
permission for the same field is considered the same) except for the deleted
type. Parent profile changes and child permissions changes are not equivalent.
Rows in the original comparison result | Rows in the next comparison result | Is the metadata included in the next result? |
new or changed permissions | new or changed permissions | Yes |
new or changed permissions | deleted permissions | No |
new or changed or deleted permissions | new or changed or deleted parent profile | No |
new or changed or deleted parent profile | new or changed or deleted permissions | No |
Example permission scenario
Imagine you have a git to git comparison that shows a field permission A as New
.
When cloning the package you choose a git to org environment to compare, and this results in a field permission A showing up as Different
(this can happen if the field permission already exists in the target org).
In this case this field permission A from the second comparison will get included for deployment, even though the difference type is distinct (New
versus Different
)
Custom object and subcomponents
For custom objects and subcomponents the difference type is independent. New parent object changes and subcomponent permissions changes are equivalent.
Rows in the original comparison result | Rows in the next comparison result | Is the metadata included in the next result? |
new or changed or deleted subcomponents | new or changed or deleted subcomponents | Yes |
new or changed or deleted subcomponents | new parent custom object | Yes |
new or changed or deleted subcomponents | changed or deleted parent custom object | No |
new parent custom object | new or changed or deleted subcomponents | Yes |
changed or deleted parent custom object | new or changed or deleted subcomponents | No |
new or changed custom object | new or changed custom object | Yes |
new or changed custom object | deleted custom object | No |
For reference, here are the subcomponents type of custom object:
CustomField
BusinessProcess
Index
ListView
NamedFilter
RecordType
SharingReason
ValidationRule
WebLink
CompactLayout
Example custom field scenario
If the custom field is New
in the original comparison and Different
in the next comparison, it will still be selected for deployment in the second comparison.
If the Custom object is New
in the original comparison, but Different
in the next comparison, it will still be selected for deployment in the second comparison.
Other metadata types
All difference types are independent. As long as the metadata item name is the same between comparisons the subsequent comparison will select the metadata item.
Example apex class scenario
A deleted apex class in the original comparison and a new apex class in the next comparison with the same API name will be considered the same and be included in the next comparison and deployment.