我们有几个项目使用相同的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