Вы можете использовать Mercurial или Git без проблем. Я не знаю, почему @TomTom заявляет иначе, не давая никаких подсказок о причинах.
Конечно, вам придется управлять различными бинарными файлами, которые входят в каждую разработку игры (фильмы, текстуры, карты и т. Д.). Но у обоих программ есть способы справиться с ними.
Mercurial
Mercurial имеет различные расширения для работы с большими файлами, особенно двоичными.
Начиная с версии 2.0, расширение Large File включено в Mercurial, и вы можете использовать его, не загружая ничего другого. Файлы не хранятся непосредственно в хранилище, но Mercurial отслеживает, какая версия файла необходима для каждого набора изменений, поэтому вы можете загрузить точную версию вашей игры с нужным файлом, когда вам это нужно.
До версии 2.0 использовалось в основном два расширения:
- расширение Bfiles , которое использовалось в качестве основы для нового расширения в 2.0
- Расширение Bigfile , что немного сложнее, чем два других, на мой взгляд
1025 * Гит *
Я не очень знаком с возможностями Git для обработки больших файлов, но я знаю, что существуют различные решения. Этот пост должен дать несколько хороших указателей: Управление большими двоичными файлами с помощью git
Я слышал много хорошего о git-annex .
1035 * SVN *
Я использовал SVN с большими файлами, и у меня нет впечатления, что он управляет ими лучше, чем Mercurial (без расширений) из коробки.
Если вы решите использовать расширение для управления большими файлами с помощью Mercurial / Git, Subversion значительно отстает в плане функциональности.
Заключение
Если вы хотите, чтобы версия двоичных файлов синхронизировалась с исходным кодом, расширения бота Mercurial и Git отлично справляются с этим.
Каждая версия двоичных файлов хранится в отдельном централизованном каталоге (largefile store
в терминах Mercurial), а когда разработчик клонирует репозиторий или обновляет определенный набор изменений, только необходимые файлы загружаются из этого магазина.
Вы даже можете использовать один и тот же магазин для различных хранилищ!
Процесс добавления файла в хранилище или его обновления почти прозрачен для разработчика, поэтому, например, нет проблем с длинной кривой обучения.
В заключение, я действительно не понимаю, почему Git или Mercurial не подходят для этой задачи, и никакой другой ответ не дает никакой реальной причины.
По моему мнению, крупные игровые компании придерживаются старых инструментов, потому что изменение требует времени, и когда вы платите за что-то, вы его используете! Сколько компаний до сих пор используют VSS или CVS только потому, что иерархия ничего не услышит о чем-то еще? Мы только что перешли на TFS (из VSS) в прошлом месяце, где я работаю ...