OSX Lion 使用什么进行版本控制?

Nic*_*Nic 4 version-control osx-lion

我最近读到 Lion 使用版本控制来跟踪更改(增量),而不是文件 (SVN)。此功能背后的技术是否已发布?我假设它是 Git、Hg、Bazaar 或它们的自定义变体,但这完全是推测性的。

引用上面的链接:

OS X Lion 足够智能,只能跟踪和记录不同文档副本之间的更改。这意味着不会保存 400 个完整副本,只是版本之间的部分更改。

afr*_*ier 7

完全不同的东西。

Ars Technica 的 Lion Review 对此进行了详细介绍。(见这里

基本上它分块文件,查找不同的块,并将它们存储在 SQLite 数据库中。(CoreData 使用 SQLite)一个单独的 DB 用于跟踪所有不同的修订以及哪些块与哪些修订相匹配。

处理分块的引擎也是半智能的。它可以破解某些文件格式(例如JPEG 图像、PDF 文件、MPEG 音频/视频文件等)并分离出其中的各种块,然后在这些块中寻找变化。这可以防止视频标头中的更改生成一连串更改,从而不必要地膨胀增量存储。

另请注意:必须编写要使用此版本控制系统的应用程序才能这样做。默认情况下它不是自动的,文件系统上的每个文件也不是这个框架的版本。

我想到的一件事我还没有解决:是否可以“固定”特定版本的文件?Ars 审查表明,Lion 的世代存储框架会自动老化旧版本。有没有办法告诉操作系统某个特定版本很重要,可以无限期保留?

  • @melee:滚动哈希、滑动/可变窗口和破解文件格式以实现高效的增量处理并不是什么新鲜事。然而,它似乎*做得好*,这是苹果最近的强项。如果 API 是健全的,我想我们会看到开发人员很快就加入进来。 (3认同)
  • @melee:版本控制中的“非文本文件问题”不一定与存储增量有关!相反,人类不可读且没有方便的换行符的文件很难*diff*(查看更改的内容)和*3-way merge*(将独立更改合并为一个新版本)。没有聪明的算法可以解决这个问题;它要求负责 diff/merge 的系统可扩展以使用非文本格式。或者,可以省略 diff 和 merge 而只显示历史快照,就像我假设 Apple 的系统那样。 (2认同)