This repository was archived by the owner on Oct 23, 2022. It is now read-only.

Description
Handling changes in named children of complex Metadata Types is already supported (changes in a CustomField within a CustomObject).
However changes in properties of its own Metadata Type aren't supported yet (e.g. searchLayouts of a CustomObject).
The approach should be as @froucher drafted:
Given we create a change set with force-dev-tool
When a list of independent child is added/modified
Then it will create a change set with the list of independent "component"
And excluding any metadata of the parent metadata
Given we create a change set with force-dev-tool
When a list property that doesn't belong to an independent child is added/modified
Then it will create a change set with the all "metadata"
And excluding all independent child metadata
Given we create a change set with force-dev-tool
When a list of independent child is added/modified
And a list property that doesn't belong to an independent child is added/modified
Then it will create a independent "component" with the property value
And it will create a change set with the all "metadata"
Looking at the code, I think most of the changes could be applied in metadata-file-container.js (parse, diff, toString).