滥用版本控制

时间:2009-04-01 10:15:14

标签: svn version-control binary-diff

版本控制是否适合于内容本质上是二进制数据文件的项目? 我正在考虑的包装重量为10千兆,有很多BMP和TGA文件。

subversion可以处理这样的事情吗?是否有可能生成某种二进制补丁,允许用户只下载修改过的内容。 Rsync可能是一个选项,但后来没有回头路。我真的希望能够轻松地回到早期版本。

我也看了question,但对答案不满意

5 个答案:

答案 0 :(得分:4)

您的问题是发布管理,其中包括:

  • 构建:您如何以及以多快的速度重新生成部分或全部交付内容?
  • 包装:该交货中有多少文件?
    如果您的内容包含太多文件,那么在任何远程环境中部署(即复制或rsync)都不容易,不是因为全局大小,而是因为事务的数量需要的。
  • 发布:您在哪里存储您的交付以及如何将其链接到生成它的初始开发环境?

我认为这样的大规模传递不是在VCS中发布,而是存储在基于文件系统的存储库中,具有适当的名称(或version.txt)以便能够识别其版本和链接它回到开发内容(在subversion中存储和标记) Maven是这样一个回购的一个例子。

我还要指出,要交付的内容应该包含有限数量的文件,这意味着:

  • 将大量相关文件压缩成一个压缩文件
  • 运行一个不仅仅是rsynch的脚本,而且还会解压缩这些文件

答案 1 :(得分:3)

Subversion使用xdelta表示二进制文件。

http://subversion.tigris.org/faq.html#binary-files

顺便说一句。相关问题:How good is Subversion at storing lots of binary files?

答案 2 :(得分:2)

Subversion仅在执行更新时通过行而不是整个文件发送差异。但是,文件DO的初始检出需要下载所有文件。这基本上意味着下载10GB。二进制文件也是合并的噩梦,所以只要你在主/从环境中工作,只有1个人可以提交,而其他人只是更新文件的奴隶,这将非常有效。否则你可能会在冲突后结束冲突。

是否无法将10GB拆分为多个存储库?他们真的需要整体版本吗?

答案 3 :(得分:2)

简短的回答是肯定的。

我们将subversion用于一个相对较大(40GB结帐)的游戏开发项目。我会说它非常好地处理二进制文件。缺点是现在您只能获得更改的文本信息,即:“更改纹理以适应更新的主角模型”。但是,当您正在寻找性能问题并确保每个人都使用相同的二进制文件进行开发时,即使是这些一点点信息也可以帮您省钱。据我所知,补丁需要完整的文件。

答案 4 :(得分:1)

您可能希望查看一些专用的资产管理系统,而不是试图将源版本控制系统暴力弯曲到您的需求中。我听说过的唯一一个(但没有经验也没有附属关系)是http://www.alienbrain.com/ - 并且它是$ $ $。