我有一个基于文档的应用程序(Mac和iOS),我正在尝试找到一种自动解决版本冲突而不会打扰用户的好方法。
我的文档实际上是一个文件包,其中包含许多存储为文本文件的小笔记。版本冲突的最可能的情况是用户修改每个设备上的不同注释,因此我应该能够通过选择每个设备中最新的一个来合并它们。
然而,使用NSFileVersion我只获得当前(最新)和冲突版本,但我需要知道共同祖先的修改日期以便知道我可以使用笔记而不会丢失更改。
示例流程:
Both clients start with note1.txt: base
Client 1 Client 2
-------------- ----------------
note1.txt: foo
note1.txt: bar
note2.txt: hey
基于以上所述,客户端2的版本将成为当前,因为note2.txt是最近的保存操作。
在上面的例子中,我不能简单地合并到最新版本的note1.txt中,因为我会丢失客户端2所做的更改(“foo”)。我需要首先查看客户端2的note1.txt,并告诉它是否与共同的祖先(“base”)相比被修改。
这将是一个简单的&优雅的解决方案,但我认为这是不可能单独使用NSFileVersion
,除非我遗漏了一些东西。
另一种方法是使用某种带时间戳的事务日志,但这会使事情变得复杂......