共享包括插件[Unity]在内的常用代码

时间:2016-08-30 13:29:08

标签: git unity3d plugins shared-libraries git-submodules

我们有几个项目使用相同的Plugins + libs(一些包含插件的常用代码,也包括一些通用代码,例如数学库)

我们需要将它们与主存储库分开,因为我们在几个项目之间共享它们。

目前,插件和库是连接到主项目的两个独立子模块。问题是管理它们并不方便,因为最常提交插件而你也会提交“libs”来连接新的.dll。一种选择是将“libs”移动到插件中,但如果可能的话我们希望避免使用此选项。

例如,如果我们可以将插件移动到更深层,我们可以做

Assets/common/Plugins
             /libs

其中“common”是一个新的子模块,其中包含插件和库(仅作为文件,而不是子子模块)。它将解决我们所有的问题。

如果你实际上无法移动插件(比如在某处设置新路径)那么还有其他方法可以解决这个问题吗?

P.S。子树可能也不是一个选项,因为我理解它 - 它要求团队中的每个人都避免同时从不同的存储库中提交(如root和插件将在我们的示例中),使用“git subree push”代替也没有很好的用户界面支持(这是必需的,因为大多数团队都不是程序员,但仍然一直使用git),所以我们最好不用它来避免将来的复杂化。

1 个答案:

答案 0 :(得分:1)

Git支持符号链接,它们可以在Unity的其他地方使用,但会在警告中通知符号链接可能会破坏内容。

符号链接至少在使用Cygwin的OS X和Windows 10上运行良好(使用CYGWIN =符号链接:本机设置)。从未尝试使用更多本机Windows客户端,但Windows确实支持目录连接所需的内容 - 不确定git是否会自动执行此操作。

因此,假设您可以使用符号链接,那么您将拥有:

Assets
  |-- common            <--- git submodule
  |     |-- Plugins <----------+
  |     +-- libs               |
  |-- Plugins                  |  
  |     |-- some-other-plugin  |
  |     +-- common ------------+ <-- symlink to
  |                            Assets/common/Plugins