将Git用于大型游戏项目的潜在策略是什么?

时间:2016-02-16 02:08:02

标签: git svn version-control

关于我的问题的一些背景知识,接下来是一些问题:

我的团队将SVN用于许多游戏开发项目,并且在过去的几年里它一直很好用。但是,我们最近一直在探索是否应该转移到Git,原因如下:

  • 我们相信Git的分支功能将打开有用的编码工作流程和实践,这些工作流程和实践在SVN中很难或不可能(功能分支,合并前的代码审查,拉取请求)。
  • 我们团队的一些新成员来自一家使用Git的游戏公司,他们对SVN中缺少X或Y特征感到遗憾。
  • 与SVN相关的工具似乎更新/维护得比他们少。简而言之,Git和类似产品很受欢迎,而SVN则越来越不受欢迎。

我们想使用Bitbucket,因为我们可以更轻松地与外部承包商合作,而不是在公司防火墙后面使用SVN回购。

我们使用git-svn工具将我们的项目转换为Git仓库。 Git repo最终成为历史上的6GB!不幸的是,这对于Bitbucket和Github来说太大了,他们都强制执行1-2GB限制。

这引起了一场信仰危机"至于我们是否通过从SVN切换到Git做出了正确的决定。你可以在网上找到很多意见,认为Git对游戏开发并不好,或者二进制文件很头疼。我们的计划是将源艺术文件保存在SVN中,但任何" final" SVN中存在游戏的艺术资产。此外,一组共享库将存在于链接到我们游戏的repo的单独Git存储库中(使用子树或某些依赖关系管理系统,很可能)。

我正在寻找几个方面的答案/反馈:

  1. 对于Git回购,6GB是不是很笨重?人们是否能够有效地使用它,或者它可能没有响应或难以推送到遥控器?
  2. 将一个大型Git仓库拆分成几个较小的仓库来回避任何"大型回购"是否合理。问题?考虑到它,似乎它可能是一个大混乱,并且构建一个项目以适应版本控制限制并不适合我。克隆似乎也有问题 - 你需要单独克隆每个回购,还是可以一次性完成?
  3. 让其他人成功地将Git用于此类型的游戏开发项目,如果是这样,使用了哪些策略使工作流程尽可能简单明了?我们是否会花更多时间将版本控制权交给我们的出价而不是实际开发游戏!?
  4. 那些不得不踏上这条道路的人的任何反馈或见解都会很棒!

1 个答案:

答案 0 :(得分:0)

我还没有将Git用于游戏开发,而是用于拥有大量视频资源的多媒体开发。

我们所做的与你的建议相似;我们将大型资产保存在一个单独的子模块中。它需要一些培训(可能还有一些包装脚本使普通案例变得更容易,我不记得),让每个人都习惯使用子模块,但是一旦完成,它就会很顺利地完成。< / p>

我们甚至允许资产在子模块中更改,一旦它变得太大,我们就创建了一个新的repo并将子模块切换到那个。这意味着你没有在两个部分之间获得历史记录,但由于它们是不太重要的二进制文件,你总是可以使用<body> <div class="main"> <div class="container"> <div class="row"> <div class="col-sm-5 col-sm-offset-7"> <h1>70&deg;</h1> <h2>5-day forecast</h2> <div class="forecast"> <div class="day row"> <div class="weekday col-xs-4"> <span class="glyphicon glyphicon-plus"></span> <p>today</p> </div> 将两个存储库的历史拼接在一起如果你想支付检查大型二元仓库的费用,请获取完整的历史记录。

所以是的,我会说Git可以为这个用例工作,只要你保持主存储库的合理大小和文本,并分别管理你的资产。无论是在SVN中导出并以某种方式导出,在Git子模块中打破历史记录,还是通过像git-annex这样的东西,你可能需要弄清楚取决于尝试几个接近并看到你认为最合适的那个。

相关问题