大文件的版本控制

13

我们很高兴在工作中使用SVN进行软件配置管理。目前,我将二进制资产放在同一个SVN仓库中,与代码共存。SVN支持非常大的文件(它会以流式方式传输它们,以保持内存使用率合理),但是速度非常慢。

对于大约1GB(并且不断增长)的资产,您推荐使用哪种资产管理软件?我们希望有分支和合并功能(不同的资产和配置文件送到不同的客户)。


SVN优化以保持大型代码库的响应性。 - Greg Hewgill
第一段是共享的,问题完全不同。Programming is the process of designing, writing, testing, and maintaining computer programs. It is a broad field that encompasses many different specialties and technologies. From web development to artificial intelligence, programming is an essential skill in today's digital world.
  1. What are some common programming languages?
  2. How do you debug a program?
  3. What is object-oriented programming?
  4. What is the difference between a compiler and an interpreter?
  5. How do you approach problem-solving in programming?
- Dustin Getz
5个回答

4
在我们公司中,我们使用Documentum作为ECMS来管理大量(我是指真的非常多)的二进制文件。Documentum(或其他ECMS,如Alfresco)被认为是管理文档的“正确”解决方案。Documentum支持标记和分支,并可以将文件公开为WebDAV(因此集成到您的工作流程中可以更或多或少地透明)。
这是理论。在实践中,我们发现Documentum很慢,难以配置和管理。而且,即使我们有很多文档,大部分文档的大小也不超过几百兆。
这个答案更多地告诉你不应该做什么,而不是应该做什么...抱歉...

4
请注意,合并二进制文件几乎是不可能的!至少自动合并几乎不可能。我从未听说过有支持三方合并二进制格式的程序。更不用说解决冲突了。
这就是为什么大多数资产管理工具没有分支,因为这毫无意义,因为你不能再次合并。锁定和线性历史记录更好。如果你想要“分支”,那么请复制带有历史记录的文件。

3

Perforce是我听说过的唯一用于处理大文件和整个项目的版本控制系统。它免费提供两个座位,但对于更多用户而言相当昂贵(每个座位约为900美元)。我听说它可以处理高达1TB的代码库。

Git可能是另一个选择。它的行为与SVN有些不同,但是专门针对大型项目(例如Linux内核)开发。我不确定它是否适用于大型二进制文件。


2
使用GIT和Adobe Flash项目(45 mb .FLA文件),我开始看到致命错误:内存不足,malloc失败。我的机器有2 GB内存,所以我猜测GIT不能很好地处理大文件。 - neoneye
1
我在游戏行业工作时使用了Perforce。它有时候会很烦人,但是它能够很好地处理大文件。我们所有的资产都保存在Perforce中。 - gruszczy

1

Mercurial大文件扩展可以帮助解决这个问题。它增加了将文件标记为“大文件”的功能,并将这些文件存储在与仓库其余部分分开的中央存储库中。使用哈希来确定您需要哪些版本的大文件,并仅下载您现在需要的那些文件。


0
如果你需要管理大文件,可以尝试使用Plastic SCM(www.plasticscm.com)。据我所知,Perforce也是一个选择,但分支和合并不够强大。

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