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



我们有几个项目使用相同的Plugins + lib(一些常见的代码包装插件,也有一些通用的,比如数学库)

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

目前,插件和库是两个独立的子模块附加到主项目。问题是,这是不方便管理他们,因为提交到插件最常见的不是你也提交到"库"挂钩新的。dll的例子。一个选择是移动"库"到插件,但我们希望避免这个选项,如果可能的话。

例如,如果我们可以把Plugins往下移动一层,我们就可以

Assets/common/Plugins
             /libs

其中"common"是一个包含Plugins和lib的新子模块(只是文件,而不是子模块)。这会解决我们所有的问题。

如果你不能真正移动插件(比如设置它的新路径),那么有没有其他方法来解决这个问题?

注:子树也可能不是一个选择,因为我理解它——它要求团队中的每个人都同时避免犯不同的存储库(如根和插件将在我们的示例中),使用"git子树推",也没有一个伟大的UI支持(这是必要的,因为大多数的团队不是程序员喜欢但仍然使用git),所以我们最好是生活没有它,以避免未来并发症。

Git支持符号链接,它们可以在Unity的其他地方工作,尽管你在警告中被告知符号链接可能会破坏东西。

Symlinks至少在使用Cygwin的OS X和Windows 10上运行良好(Cygwin = Symlinks:native setup)。从来没有尝试过更多的本地Windows客户端,但Windows确实支持你需要的目录连接-不确定git是否会自动完成。

那么,假设你可以使用符号链接,你会有:

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

最新更新