Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 共享通用代码,包括插件[Unity]_Git_Unity3d_Plugins_Shared Libraries_Git Submodules - Fatal编程技术网

Git 共享通用代码,包括插件[Unity]

Git 共享通用代码,包括插件[Unity],git,unity3d,plugins,shared-libraries,git-submodules,Git,Unity3d,Plugins,Shared Libraries,Git Submodules,我们有几个项目使用相同的Plugins+libs(一些封装插件的通用代码,还有一些通用代码,比如数学库) 我们需要将它们与主存储库分开,因为我们在几个项目之间共享它们 目前,插件和libs是连接到主项目的两个独立子模块。问题是这样管理它们并不方便,因为提交到插件的次数最多,例如,您也会提交到“libs”来连接新的.dll。一种选择是将“libs”移动到插件中,但如果可能的话,我们希望避免这种选择 例如,如果我们可以将插件移动到更深的一层,我们就可以做到 Assets/common/Plugins

我们有几个项目使用相同的Plugins+libs(一些封装插件的通用代码,还有一些通用代码,比如数学库)

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

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

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

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

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


p.S.subtree可能也不是一个选项,因为据我所知,它要求团队中的每个人避免同时从不同的存储库提交(就像我们的示例中的根和插件),而是使用“git subtree push”,而且也没有很好的UI支持(这是必需的,因为团队中的大多数人都不像程序员,但仍然一直在使用git),因此我们最好不要使用它,以避免将来的复杂情况。

git支持符号链接,它们在其他统一的地方工作,尽管您在警告中被告知符号链接可能会破坏东西

符号链接至少在使用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
资产

|--共同感谢您的回复,我们将尝试此解决方案