二进制文件的单文件历史记录格式/库?

6
我的应用程序将编辑一堆完全不相关的大文件(属于不同的用户),我需要存储文件先前状态的检查点。Delta压缩在这种文件格式上应该非常有效。我只需要线性历史记录,不需要分支或合并。
有低级库可以提供部分解决方案,例如xdelta3听起来像一个很好的二进制差异/补丁系统RCS实际上似乎与我的问题非常匹配,但无法很好地处理二进制文件。 git为我的问题提供了完整的解决方案,但它是一个庞大的程序套件,其存储格式是一个完整的目录。
是否有比git更简单的东西可以:
  • 适用于二进制文件
  • 执行增量压缩
  • 让我提交新的“最新”版本
  • 让我回忆旧版本
如果能够做到这些,就会得到额外的奖励分数。
  • 具有单文件存储格式
  • 可作为C、C++或Python库使用

我甚至找不到适当的词语组合来谷歌这类程序,所以这也会很有帮助。


如果没有更多关于你将修改的“大文件”类型以及它们将如何被修改的上下文,那么我们只能提供一个粗略的概述,而无法做出更具体的建议。 - plunker
解决方案需要在多个操作系统之间可移植吗? - armel
2个回答

2

来自RCS手册(1.概述)

[RCS]可以处理文本和二进制文件,尽管对于后者功能会减少。

RCS似乎是值得一试的好选择。

我为一个基金会工作,该基金会一直在使用RCS来对成千上万个完全不相关的文件进行版本控制(git或hg不是选项)。主要是文本,但也有一些媒体文件,它们具有二进制性质。

RCS与二进制文件配合得相当不错,只需确保不使用替换模式选项,以避免意外替换看起来像$ Id的二进制位。

如果您想知道这是否适用于您,例如,您可以尝试使用Photoshop图像,将其与RCS一起放入版本控制。然后更改一部分或添加一个图层,并提交更改。然后,您可以验证RCS对于管理二进制文件而言表现如何。

RCS已经为我们服务了相当长时间。它维护良好,可靠,可预测,并且绝对值得一试。


0

请原谅我这样问,但我的经验告诉我要质疑假设。我不知道为什么你需要一个“单文件”解决方案,但我的答案取决于此。

选项1 - 如果你只是想要简单易用的解决方案,你考虑过使用单个git仓库来跟踪多个二进制文件吗?

通过使用git的每个文件历史记录功能,你可以独立查看仓库中每个文件的历史记录,创建补丁并回滚而不影响其他部分的仓库。例如,通过使用提交命名约定,你可以轻松地回滚对个别文件的更改,方法如下:

git log -- filename
git revert <commit-id>

选项二-如果您有系统限制强制您存储单个文件,我建议考虑git-bundle。基本上,这允许您将Git repo打包成单个文件,以便更轻松地存储/重定位(我想这基本等同于压缩您的repo并存储已压缩文件)。

选项三-考虑Fossil。我没有使用过它,因此无法评论其品质,但看起来它可能满足您的要求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接