认识一下智能锁--减少 Unity 版本控制合并冲突的新方法

在 Unity,我们热衷于帮助创作者完成最佳作品。因此,Unity DevOps团队很高兴推出Unity 版本控制的新功能--智能锁。
智能锁大大减少了通常与文件锁和分支相关的令人痛苦的合并冲突。长期以来,开发人员一直在使用分支来实现更快、更安全的迭代。现在,包括艺术家在内的每个人都可以自信地使用分支来扩展项目。
智能锁在允许你锁定文件之前,会自动检查以确认你正在使用的是最新版本,因此它能大大降低合并冲突的风险,让团队无后顾之忧地创建分支。
如果你是一名艺术家,正在创建功能分支、任务分支或个人分支,智能锁可以让你灵活地创建分支,并与队友并行工作,而不必担心冲突。您可以更快地进行实验和迭代,同时保持主要项目历史记录的安全。
智能锁可帮助您探索多样化的工作流程。与其改变你的团队来遵循你的版本控制系统(VCS),你可以根据最适合你团队的方式来调整 Unity Version Control。
许多用户认为,只需锁定或签出文件就能自动防止合并冲突。遗憾的是,现实并非如此。
传统的文件锁定机制的确可以防止某些冲突,但这些文件锁无法逐个分支移动,允许另一个艺术家从不同的分支签出相同的文件。由于无法解决工作流程与分支不兼容的根本问题,这种无法旅行的情况使团队很容易发生合并冲突。
要了解智能锁的工作原理,我们先来看看合并冲突是如何发生的,即使团队正确使用了文件锁。

这种情况说明了使用分支的团队是如何经常遇到合并冲突的,尽管他们尽了最大努力使用文件锁定。成果浪费时间,降低团队士气。智能锁允许用户将分支定义为真实来源,从而解决了这一问题。
无论你是在分支中还是在单线程中工作,锁都会沿着唯一的开发线在分支中 "旅行",直到到达目标分支,在那里检查或合并更改。无论你是继续在一个分支中工作,还是继续创建子分支,智能锁都会强制执行这种单线开发。

现在,与指定文件相关的所有锁定请求都会知道不同分支中存在的任何新版本。这意味着你不必担心自己的修改是否与队友的修改相冲突,也不必担心自己使用的是过时的版本。
这一简单而有效的流程可防止多个团队成员同时处理相互冲突的版本,从而避免出现更改遗漏。这有助于确保每个人的艺术构想都能得到考虑,并使同步协作几乎没有困难。

大多数程序员可能都熟悉基于 Git 的系统,他们已经理解并欣赏分支的价值。分支对艺术家的主要好处与对编码员的好处相同。
当你在分支中工作时,你实际上已经脱离了项目的主要历史。这种隔离使您能够安全地进行原型设计和实验,而不必担心可能会破坏您的项目。
安全实验使您能够不断迭代并构建多个版本,因此您可以通过浏览版本库历史来选择您最喜欢的版本。让最好的想法胜出。
分支从本质上减少了同时协作的噪音。它为新创意的产生留出了空间,同时又与最初的概念保持了联系。简单来说,你可以想一想,一个人在谷歌文档中进行迭代与与其他两百个合作者在一个文档中进行迭代的区别。
您可以生成新的概念,而不必担心合并冲突,将其存储在版本控制系统中,而不是在本地硬盘或未与主项目集成的外部源中独立工作。
分支使团队能够将复杂的工作流程分解成易于消化的片段。您可以根据项目的组织方式创建分支。在游戏开发过程中,为了便于项目管理,分区工作是很自然的事情。例如,您可以按功能、角色甚至整个关卡来划分团队内的工作。您的团队可以专注于各自分管的工作。
在分支机构内进行分工,可以让不同的团队和团队成员按照自己的节奏、风格和流程开展工作,同时为更大的项目做出贡献。这种摩擦的消除不仅使合作更加顺畅,而且您的团队也更有可能更频繁地更新项目历史记录。您可以更快地发货,满足玩家的期望。
分支可以让你更容易看到项目历史的全貌,而将变更检查到主目录则很难看到变更的全貌。分支可以帮助你更快地识别这些变化。
我们设计的智能锁可以让团队所有成员灵活地选择工作方式。我们也认识到,在某些情况下,比如在项目的构思和实验阶段,处理复杂的文件锁可能会造成障碍。
因此,除了行车锁,我们还建立了新的分支排除功能。这样就可以通过设置自定义锁定规则,将分支排除在锁定机制之外。当你知道你永远不需要合并回源代码分支时,你就可以在你的分支内进行原型设计或实验,而不受文件锁定限制的约束。
为了确保您能够跟踪复杂的项目,并使您能够清晰直观地查看现有的锁定列表,我们还改进了桌面客户端和 UDash 内的图形用户界面 (GUI)。通过查看锁的历史记录,你可以轻松查看谁在何时创建了锁。

此外,我们还在更显眼的位置设置了功能性提示,说明如何锁定和解锁文件,并提供有用的信息,通知您特定文件上是否存在任何锁定。

要利用这一改变游戏规则的功能,只需将您的 Unity Version Control 安装更新到最新版本即可。对于内部客户或原 Plastic SCM 企业客户,您需要更新服务器和客户端,以充分体验智能锁的优势。
请务必在开始使用前阅读相关文档。
Unity Version Control 是一款与引擎无关的版本控制工具,具有快速处理大型文件和二进制文件的灵活性。通过为各种规模的游戏工作室的美工和程序员优化工作流程,您可以改善团队协作,提高工作效率,从而更快、更高效地交付高品质游戏。要免费开始使用,请注册Unity DevOps(适用条款)。