现在我们都分叉了!

主要观点:几年前在开发 Agenda 应用的协作功能时,面临在本地-first 模式下处理共享数据的挑战,后意识到 Git 的方法可用于合并数据,于是创建了BranchedFile类。2024 年初参加 Local-First Conf 后,受启发将BranchedFile类型变得更通用,变成了名为Forked的 Swift 新框架,它使用结构体、支持分支和 3 路合并、可存储Codable数据、支持高级合并算法、可通过 iCloud 等同步、不仅用于同步还可用于单设备内的子系统,代码简单且融合效果好,如在Forkers示例应用中,通过@ForkedModel@Merged属性实现了结构体的合并,还能与 Swift 6 结构化并发配合避免竞态条件,添加 CloudKit 同步也很简单,仅需几行代码。

关键信息:

  • Agenda 是本地-first 应用,协作功能需处理共享数据且保持一致性。
  • 借鉴 Git 方法创建BranchedFile类实现数据合并。
  • 2024 年初推出[Forked]框架,具有多种特性。
  • @ForkedModel@Merged属性用于结构体的合并处理。
  • 与 Swift 6 结构化并发配合及添加 CloudKit 同步的代码示例。

重要细节:

  • BranchedFile要支持分支、保留足够数据版本用于 3 路合并。
  • Forked框架的结构体融合方式及@Merged属性可添加自定义合并逻辑。
  • 示例中Forkers结构体的各个属性及合并效果。
  • 通过QuickFork隔离变化集并合并以避免竞态条件。
  • ForkedResourceCloudKitExchange实现 CloudKit 同步的代码。
阅读 7
0 条评论