Unity中版本控制的最佳做法?


11

我对如何在Unity中使用版本控制感到有些困惑,尤其是对于不仅仅是场景的对象(例如场景或预制件)。

最近,当我和我的同事在同一场景的不同部分工作时,我们遇到了一个问题。导致冲突,分支和融合。

最后,无论如何,我的修改被他的修改所覆盖。

我目前看到的唯一方法是我们轮流在同一对象上工作,但这似乎并不方便,特别是因为我们当前正在做的所有工作都在场景中。

人们在这种情况下通常会做什么?

(我们正在使用Mercurial,BitBucket和SourceTree。)


1
恩 小心评论为什么问后不到5分钟我就被否决了?如果我不知道问题出在哪里,我将无法改善这个问题。
Kaworu

2
我也遇到了这个。您可以将脚本放到没有问题的位置,但是场景等看起来更难
Ewan 2016年

1
这些场景文件是很难合并的文本文件,还是二进制文件(更不可能)?如果它们是二进制文件,则Unity 似乎为此提供了合并(也许是diff?)工具
内森·库珀

@NathanCooper据我所知,它们是二进制文件。至少它们的行为类似于二进制文件,并且在文本编辑器中打开它们可以像其他编译文件一样给我带来巨大的负担。我不了解Smart Merge。谢谢!
Kaworu

Answers:


6

如果您使用的是GitHub,则可以尝试以下解决方案。

  1. 统一打开“编辑”->“项目设置”->“编辑器”,然后在项目设置的检查器中打开。
  2. 将“版本控制模式”更改为“可见图元文件”。
  3. 将“资产序列化模式”更改为“强制文本”。

这对我来说很好。


3

大多数版本控制系统(VCS)都是为文本设计的。它们通常具有用于比较(diff)和合并源代码的非常强大且便捷的功能,并且某些工具甚至可以自动合并更改(并在猜测应如何合并更改以及应邀请开发人员在何时进行手动合并)。

能够更好地支持diff和合并使用这些文件的各个应用程序中的二进制文件。例如,Microsoft Word使比较两个文档成为可能,尽管它远非便捷的合并工具,但总比没有好,并且多次为我节省了时间。不幸的是,合并功能通常在软件产品中受到监督,或者难以实现(您如何可视化diff3D场景?)

对于二进制文件,VCS几乎没有帮助。他们不仅不能有效地存储连续的更改,而且也不能帮助您合并更改。

两年前,我问了一个关于视频编辑软件中版本控制使用的非常相似的问题。我认为针对我的问题的答案也部分适用于此,唯一(但重要)的区别是我的问题与大文件有关,而在您的情况下,二进制文件可能相对较小。

您发现的方法是“轮流在相同的对象上工作”,是一种很好的方法。如果您无法合并,请不要同时处理相同的内容。如果您在同一间办公室工作,这可能很容易。如果不是这样,大多数版本控制系统(包括您所使用的版本控制系统;这里也将 BitBucket上下文中进行讨论)都支持locking,即,VCS的用户可以通过系统告诉他,他正在处理给定的文件。现在; 其他用户可以加载文件的最新版本,但不要更改它们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.