一种版本控制系统,在客户端具有最小的空间要求,并且适用于二进制文件

时间:2013-05-27 10:34:38

标签: git svn version-control mercurial cvs

(这是我的第一篇文章,所以要温柔) 我使用subversion作为大型二进制文件的版本控制。 我每小时更新大约2.5演出的二进制文件。 我每天得到大约400美元的不同。 有些文件是PE,但它主要是压缩文件,难以获得良好的差异。 我的客户端上的“.svn”文件夹每天都在增长,我在客户端上没有空间来获取此增量。

此大小是由客户端上的subversions pristine副本引起的(存储库非常小)。 像GIT或Mercurial这样的Distrubuted Version控件将在客户端上存储一些我没有空间的存储库。我永远不会真正做差异,只是对头部或给定版本的更新。因此,客户端原始副本的速度优势对我没有任何影响。

所以我打算使用CVS,因为它是;

  1. 成熟

  2. 在客户端点亮(没有原始副本,对我来说非常重要)

  3. 这是一个基于服务器的架构

  4. 开源,我很穷。

  5. 我应该使用完全不同的东西,备份解决方案等吗? 除了CVS之外还有其他版本控制符合这些要求吗?

4 个答案:

答案 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管理一组巨大的文件,而不会将它们实际保存在客户端上。
  • Sparkleshare是“非专有的Dropbox”。
  • 可以使用普通rsync高效地将数据提取给您的客户。
  • rdiff-backup可能会被用作前者的变体:虽然通常以rsync的方式工作,但它能够保持任意数量的“增量”代表目录的过去状态正在同步,因此可以提取/回滚任何此类状态。可能会随意清除旧的三角洲。

    这可能与rsync结合使用:rdiff-backup在服务器上使用,由它管理的实际副本通过rsync提供给客户端。如果需要回滚,则在服务器上还原另一个版本,然后客户端使用rsync获取它。

  • bittorrent服务器和客户端:此协议使用块传输其文件,因此如果对二进制文件的更改有些本地化,这可能会正常工作。