简体   繁体   English

对大文件的版本控制

[英]version control on large files

We happily use SVN for SCM at work. 我们很高兴在工作中使用SVN for SCM。 Currently I've got our binary assets in the same SVN repository as our code. 目前,我的二进制资产与我们的代码在同一个SVN存储库中。 SVN supports very large files (it transmits them 'streamily' to keep memory usage sane), but it is SLOOWWWWW. SVN支持非常大的文件(它'流畅地'传输它们以保持内存使用的合理性),但它是SLOOWWWWW。

What asset management software do you recommend, for about a GB (and growing) worth of assets? 对于大约GB(且不断增长)的资产,您建议使用哪种资产管理软件? We would prefer branching and merging (different assets & config files go to different customers). 我们更喜欢分支和合并(不同的资产和配置文件转发给不同的客户)。

Please be very aware that it is almost impossible to merge binary files! 请注意,合并二进制文件几乎是不可能的! At least automatically. 至少是自动的。 At least I've never heard of a program that supports three-way merging on a binary format. 至少我从来没有听说过支持二进制格式的三向合并的程序。 Let alone conflict resolving. 更不用解决冲突了。

That's why most asset management tools don't have branching, since it makes little sense since you can't merge again. 这就是为什么大多数资产管理工具都没有分支的原因,因为它无法再次合并,因此没有多大意义。 Locking and linear history is better. 锁定和线性历史更好。 If you want to "branch", then make a copy of the file with history. 如果要“分支”,则使用历史记录制作文件的副本。

At my company, we use Documentum as a ECMS, managing lots (and I mean really lots) of binary files. 在我的公司,我们使用Documentum作为ECMS,管理很多(我的意思是很多)二进制文件。 Documentum (or other ECMS like Alfresco) are supposed to be the "right" solution to manage documents. Documentum(或其他ECMS,如Alfresco)应该是管理文档的“正确”解决方案。 Documentum supprots tagging and branching, and can expose files as WebDAV (so integration into your workflow can be more or lessa transparent). Documentum支持标记和分支,并且可以将文件公开为WebDAV(因此集成到您的工作流中可以或多或少透明)。

That's the theory. 这就是理论。 In practice, we found Documentum slow, hard to configure and manage. 实际上,我们发现Documentum很慢,很难配置和管理。 And honestly, even if we have lots of documents, most of them are not larger than a few 100's Mo. 老实说,即使我们有很多文件,其中大部分也不会超过几百个Mo.

This answer more of what you should not do than what you should do ... sorry ... 这回答了你应该做的不应该做的事情...抱歉......

Perforce is the only version control system I've heard being used for huge files and whole projects. Perforce是我听说用于大型文件和整个项目的唯一版本控制系统。 It's free for two seats, but pretty expensive for more users (around $900 per seat). 它可以免费使用两个座位,但对于更多用户而言相当昂贵(每个座位约900美元)。 I've heard it can handle repositories as large as a terabyte. 我听说它可以处理大到1TB的存储库。

git might be another option. git可能是另一种选择。 It behaves somewhat differently from SVN, but is made for bigger projects (eg the Linux kernel). 它的行为与SVN略有不同,但它适用于更大的项目(例如Linux内核)。 I'm not sure if it's good for big binary files. 我不确定它对大二进制文件是否有用。

The Mercurial large files extension could help. Mercurial大文件扩展可以提供帮助。 It adds the ability to tag files as "large". 它增加了将文件标记为“大”的功能。 Stores those files in a central store separate from the rest of the repository. 将这些文件存储在与存储库其余部分分开的中央存储中。 Uses hashes to determine which versions of the large files you need and only downloads the ones you need right now. 使用哈希来确定您需要哪些版本的大文件,并且只下载您现在需要的版本。

If you need to manage HUGE files, give a try to Plastic SCM (www.plasticscm.com). 如果您需要管理大型文件,请尝试使用Plastic SCM(www.plasticscm.com)。 AFAIK Perforce is also an option but branching and merging are not that strong. AFAIK Perforce也是一种选择,但分支和合并并不是那么强大。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM