你可以毫无问题地使用Mercurial或Git。我不知道@TomTom为什么要这样说,却没有给出任何关于原因的提示。
当然,你必须处理与每个游戏开发相关的各种二进制文件(影片、纹理、地图等),但是这两个软件都有处理它们的方法。
Mercurial
Mercurial有各种扩展来处理大型文件,特别是二进制文件。
自2.0版以来,
Large File extension已包含在Mercurial中,你可以在不下载其他任何东西的情况下使用它。文件不会直接存储在版本库中,但Mercurial会跟踪每个changeset所需的文件版本,因此,当你需要它们时,可以下载游戏的正确版本和相应的文件。
在2.0版本之前,主要使用了两个扩展:
1.
Bfiles extension,作为2.0新扩展的基础。
2.
Bigfile extension,在我看来比另外两个复杂一些。
Git
我不太熟悉Git处理大型文件的可能性,但我知道有各种解决方案存在。这篇文章应该会提供一些好的指针:
Managing large binary files with git
我听到过关于
git-annex的很多好消息。
SVN
我使用过带有大型文件的SVN,我没有觉得它比Mercurial(不带扩展)在开箱即用方面表现更好。
如果你决定使用扩展来管理Mercurial / Git的大型文件,则Subversion在功能上远远落后。
结论
关于你担心保持二进制文件版本与源代码同步的问题,Mercurial和Git扩展都处理得非常好。
每个二进制文件的版本存储在单独的
集中目录中(Mercurial术语中的
largefile store
),当开发人员克隆版本库或更新到特定的changeset时,只会从此存储库中下载
必需的文件。
你甚至可以将同一个存储库用于各种版本库!
向存储库添加文件或更新文件的过程对开发人员几乎是透明的,因此不会出现长时间的学习曲线等问题。
总之,我真的不明白为什么Git或Mercurial不能胜任这项任务,其他回答也没有给出任何真正的理由。
在我看来,大型游戏公司坚持使用旧工具是因为改变需要时间,而且当你已经支付了某些东西时,你会使用它!有多少公司仍在使用VSS或CVS,只是因为管理层不愿意尝试其他工具呢?我们上个月才从VSS迁移到TFS(我所在的公司)。