艺术家能否真实地应对开源环境中的(分布式)版本控制?

Mar*_*n V 15 git mercurial project-management open-source dvcs

Heya,我在一个开源游戏的项目管理部门工作.现在我们正在使用SVN版本控制和存储代码和资源在同一个存储库中.资产(模型,纹理)的源代码版本驻留在独立的媒体分支,而资产的渲染版本(我们工作的一个等距2D游戏,所以我们实际使用的3D模型渲染的2D图像在游戏中)驻留接近代码,因为他们需要到位来运行游戏.

我们的艺术家很难开始使用Subversion,并总体上围绕版本控制的概念.目前,该项目主要由程序员组成,我们正在考虑从SVN迁移到分布式版本控制,以便于分支(以及相关的合并过程)和发送补丁.我们还没有决定使用哪种DVCS,但我们很可能最终会使用Mercurial或Git.

虽然分布式版本控制对于具有技术背景的开发人员来说非常有用,但对于艺术家和其他技术娴熟的开发人员而言,它可能看起来过于复杂和复杂.

所以我正在寻找各种建议,以便我们如何简化艺术家的版本控制工作流程.请记住,使用像Perforce这样的东西,无论它对工作的适用程度如何,都不是免费开源项目的选择.因此,我更倾向于寻找建议,教程和项目工具,使艺术家能够轻松地围绕分布式版本控制,尤其是Hg和/或Git.

是否值得沿着那条路走下去并尝试让艺术家使用分布式版本控制?我们可以继续在我们现有的SVN存储库中存储资源(纹理,模型)的源版本.但我们仍然需要找到运行游戏所需资产的解决方案,因为它们应该靠近版本控制中的代码.

有很多很棒的DVCS指南,比如Hginit教程.然而,我发现的那些都是为程序员编写的.很高兴他们现在可以轻松地在本地提交,充分利用分支机构并合并他们的更改而不会有太多麻烦.但这可能对艺术家没有好处,但对他们来说过于复杂和可怕.您是否碰巧知道为艺术家作为主要目标受众而编写的DVCS教程?

我们也使用Trac进行项目管理,所以如果你知道一个艺术家友好的Trac插件,请告诉我:-)

Gil*_*anc 12

我甚至不确定程序员是否能够真实地应对分布式版本控制.为了证明,我在Stack Overflow上提供了分布式版本控制问题的数量.

我的建议是给艺术家两张清单或备忘单.一个是艺术作品,另一个是艺术作品.这些备忘单将特定于您的工作环境.

如果艺术家想要了解源代码控制的内容,那么程序员之一就可以解释细节.

根据我的经验,大多数人都希望完成他们的工作,而不关心什么.他们只关心如何.


Mar*_*ler 7

使用Mercurial,您可以选择让艺术家继续使用Subversion,同时让开发人员切换到Mercurial,从而享受分布式版本控制带来的好处.

诀窍是在Mercurial中使用Subversion子存储库.Mercurial允许您嵌套存储库:Mercurial 1.7支持Mercurial和Subversion子存储库,Mercurial 1.8将支持Git子存储库.

您可以通过名为的文件控制子参数.hgsub.在你的情况下,你会添加这样的东西到文件:

graphics/rendered = [svn]http://svn.example.org/graphics/rendered

这指示水银做出svn checkouthttp://svn.example.org/graphics/rendered,并到收银台存储为graphics/rendered你的Mercurial工作副本.换句话说,.hgsub文件的格式是

mount-point = [type]source-URL
Run Code Online (Sandbox Code Playgroud)

您自己进行第一次结账,添加.hgsub文件并进行Mercurial提交.此时,Mercurial将注意到在您的subrepo中检出的精确Subversion修订版.此修订号存储在.hgsubstate,这是Mercurial跟踪的额外文件.

当另一个开发人员复制Mercurial存储库时,Mercurial会注意到.hgsub.hgsubstate文件,并使用它们重新创建您提交的Subversion结帐.

该解决方案的优点是:

  1. 艺术家可以继续使用Subversion.在这里,我假设它们可以在隔离与他们的图形文件的工作,而无需克隆外Mercurial库简化事情有点.即使事实并非如此,那么他们仍然可以做他们的大部分工作的使用Subversion只有做好hg pull --update在一段时间一次,以获得最新的Mercurial变化.

  2. 开发人员不必下载所有图形文件的所有修订版.这通常是一个表明,塞了谈论大的二进制文件时(任何)分布式版本控制系统.

    问题是,与集中式版本控制,只需要存储给定文件的所有版本的服务器,但与分布式版本控制每一个开发商储存的每一个版本.

    将二进制资产外部化为Subversion subrepo端 - 可以解决此问题.

Mercurial是关于修订控制和为您提供项目的一致快照.因此,Mercurial只会检查明确提交的内容.这意味着开发人员必须定期引入新的Subversion版本:

$ cd graphics/rendered
$ svn update
$ cd ../..
$ # test new graphics!
$ hg commit -m 'Updated graphics'
Run Code Online (Sandbox Code Playgroud)

Mercurial提交在.hgsubstate文件中提交新的Subversion修订版号- Mercurial将负责在文件中插入数字,开发人员只需提交它.这样,每个Mercurial变更集都将通过.hgsubstate文件引用特定的Subversion修订版,因此您可以准确地重新创建任何过去的状态(包括源代码和图形).


pyf*_*unc 5

以下是版本控制和Mercurial的良好视觉介绍.

试着看,如果它有助于使它更容易理解.我会发现很难使用一些我无法在头脑中包裹的东西.

所以这里有一些很好的视觉介绍:

Git公开了一个更详细的模型,很多程序员都喜欢它.Mercurial提供了一个更干净,更小的概念子集来处理.我相信Mercurial将更适合您的目的.