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