SmartXChange is a way of defining and tracking synchronization of items between two locations either on different machines (local-remote) or on the same machine (local-local). A set of rules must be defined for a synchronization job that defines information such as the machines, directories, direction and overwrite rules for the synchronization job. This information is known as a ruleset and may be named and reused. Rulesets are created, stored, and accessed using the SmartXChange library.
Conflicts arise when the source and target items have both been updated. When this is noted, the ruleset is consulted and if it has an applicable rule, the conflict is resolved. If there is no resolution available, the items are considered a conflict and the synchronization of them may be skipped.
Changes are tracked using snapshots which are summaries of the state of the synchronized areas at the time of their last synchronization. Snapshots are created, stored, and accessed using the SmartXChange library.
No user interface (UI) or actual synchronization is provided by the SmartXChange processing. The calling process of the SmartXChange library must provide these items as well as callback support to provide information for item attributes and CRC.