(这是我的第一篇文章,所以要温柔) 我使用subversion作为大型二进制文件的版本控制。 我每小时更新大约2.5演出的二进制文件。 我每天得到大约400美元的不同。 有些文件是PE,但它主要是压缩文件,难以获得良好的差异。 我的客户端上的“.svn”文件夹每天都在增长,我在客户端上没有空间来获取此增量。
此大小是由客户端上的subversions pristine副本引起的(存储库非常小)。 像GIT或Mercurial这样的Distrubuted Version控件将在客户端上存储一些我没有空间的存储库。我永远不会真正做差异,只是对头部或给定版本的更新。因此,客户端原始副本的速度优势对我没有任何影响。
所以我打算使用CVS,因为它是;
成熟
在客户端点亮(没有原始副本,对我来说非常重要)
这是一个基于服务器的架构
开源,我很穷。
我应该使用完全不同的东西,备份解决方案等吗? 除了CVS之外还有其他版本控制符合这些要求吗?
答案 0 :(得分:1)
Mercurial与大文件类似于git-annex w /助手。 http://kiln.stackexchange.com/questions/4846/how-do-i-use-the-mercurial-largefiles-extension它被恰当地标记为“最后的特征”,因为它打破了DVCS中的D(就像git-annex一样),但这就是你所要求的。它工作得很好,并得到了Fog Creek的支持(人们将这个网站带到了一阶近似)。
我在CVS goulag工作了10年。我尊重你考虑它,但你不想去那里。有人第一次在提交过程中按下了ctrl-C并让你的repo处于半承诺状态,你正在挑选,v
个文件试图撤消你想要自己造成的伤害。有人第一次想要UTF-8内容而不记得做-kb
或将UTF-8放在文件名中,或者(IIRC)尝试在文件名中放置一个空格,你就会诅咒CVS。
答案 1 :(得分:1)
据我所知,CVS不做二进制差异,但会为每个版本存储每个二进制文件。如果(磁盘空间)存在问题,则CVS不适合您的预期用途。
答案 2 :(得分:0)
您可能需要查看git-annex。它使用Git使用提交和分支来组织有关文件的信息,但实际的文件内容不存储在Git存储库中,这使您可以控制文件使用的空间。它特别适合以分布式方式管理大型文件集合。
git-annex assistant提供了一个比git-annex
好的界面。
答案 3 :(得分:0)
一个问题有点没有意义,因为不清楚客户端是否必须能够获取文件的任意历史版本。所以我即将提供一套可能符合您要求的选项;希望这至少能为你提供一些提示......
所以我们走了:
git-annex
是一个解决方案,它允许使用Git管理一组巨大的文件,而不会将它们实际保存在客户端上。rsync
高效地将数据提取给您的客户。 rdiff-backup
可能会被用作前者的变体:虽然通常以rsync
的方式工作,但它能够保持任意数量的“增量”代表目录的过去状态正在同步,因此可以提取/回滚任何此类状态。可能会随意清除旧的三角洲。
这可能与rsync
结合使用:rdiff-backup
在服务器上使用,由它管理的实际副本通过rsync
提供给客户端。如果需要回滚,则在服务器上还原另一个版本,然后客户端使用rsync
获取它。