Представим, что у нас есть объект D, содержащий некоторые данные. Это изменяется по-разному в двух разных местах, в результате чего возникают объекты данных D 1 и D 2. В зависимости от содержимого D 1 и D 2 могут конфликтовать друг с другом при обратном слиянии в рамках процесса синхронизации.
Такие системы, как системы контроля версий, просто указывают, что два объекта данных находятся в конфликте друг с другом, и оставляют пользователю возможность вручную разрешить конфликт.
Однако давайте теперь представим приложение, ориентированное на потребителя, такое как приложение для создания заметок, которое синхронизирует содержимое в Интернете. В этом случае ни один пользователь не захочет вручную разрешать конфликты, которые могли возникнуть из-за того, что пользователь напечатал две версии одной и той же заметки с разным содержанием. Отказ от более старого объекта для нового объекта также невозможен, поскольку в более старом объекте может быть ценное содержимое, которое требуется пользователю.
Как мне разрешить такие конфликты в приложении, ориентированном на потребителя?