是否有可以管理大文件的分布式VCS?

时间:2020-03-05 18:55:24  来源:igfitidea点击:

是否有一个分布式版本控制系统(git,bazaar,mercurial,darcs等)可以处理大于可用RAM的文件?

我需要能够提交大型二进制文件(即数据集,源视频/图像,档案),但是我不需要对它们进行区分,只需能够提交并在文件更改时进行更新即可。

我上次查看此内容的时间大约是一年前,但显然没有候选人允许这样做,因为它们都是为了提高内存速度而设计的。那给了我一个用于管理代码的VCS和用于大文件的其他东西("资产管理"软件,或者只是rsync和脚本),当两者的目录结构重叠时,这非常难看。

解决方案

回答

我认为将二进制文件存储在任何形式的版本控制系统中都是低效率的。

更好的主意是将引用二进制对象的元数据文本文件存储在存储库中。

回答

是否必须分发?颠覆者认为,较新的分布式VCS的一大好处是其处理二进制文件的卓越能力。

回答

没有免费的分布式版本控制系统支持此功能。如果要使用此功能,则必须实施它。

我们可以注销git:他们对Linux内核开发用例的原始性能感兴趣。他们不可能在扩展到巨大的二进制文件时接受性能折衷。我不了解Mercurial,但在将操作模型耦合到存储模型以提高性能方面,他们似乎做出了与git类似的选择。

原则上,Bazaar应该能够使用实现树/分支/存储库格式的插件来支持用例,该插件的磁盘存储和实施策略已针对用例进行了优化。如果内部架构阻止了我们,并发布了有用的代码,我希望核心开发人员将修复内部架构。另外,我们可以与Canonical签订功能开发合同。

与特定的DVCS无关,最实用的方法可能是构建混合系统:实现大文件存储,并将对该存储库中Blob的引用存储到我们选择的DVCS中。

全面披露:我是Canonical的前雇员,并且与Bazaar开发人员紧密合作。

回答

是的,Plastic SCM。它是分布式的,并且以4Mb的块管理大型文件,因此不受限于随时将其完全加载到mem的限制。在此处找到有关DVCS的教程:
http://codicesoftware.blogspot.com/2010/03/distributed-development-for-windows.html