多年来一直在思考这个问题,对任何建议都非常感兴趣。
一个简单的Unity 游戏项目看起来像这样,在Root
处有一个 Git 存储库。
Root
├─Assets
│ └─Game files
└─Project files
随着我随着时间的推移开发许多插件,生成的结构将如下所示。
Root
├─Assets
│ ├─Plugins
│ │ ├─Plugin_A
│ │ ├─Plugin_B
│ │ ├─Plugin_C
│ │ └─Plugin_D
│ └─Game files
├─iOS Plugin projects
│ └─Plugin_C project
├─Anroid Plugin projects
│ └─Plugin_D project
└─Project files
现在我真的想让插件有自己的版本控制(这样我就可以继续"从"任何游戏项目开发它们),同时为每个插件保留相对的项目位置。
关键是:在同一个(!)子存储库中有多个(!)子文件夹。就像在单个 (!) 子存储库中Assets/Plugins/Plugin_D
和Anroid Plugin projects/Plugin_D project
一样。剩下的就用Plugin_C
等。
在根目录中拥有每个插件的存储库会很棒(保留它们的子文件夹位置)。
Root
└─Assets
└─Plugins
└─Plugin_A
但重点是在同一个 (!) 插件存储库中拥有重叠的文件夹。就像有一个存储库,包含本机插件(Assets/Plugins/Plugin_C
)和(!)包含它们各自的重叠插件项目(iOS Plugin projects/Plugin_C project
)。像这样适用于 iOS:
Root
├─Assets
│ └─Plugins
│ └─Plugin_C
└─iOS Plugin projects
└─Plugin_C project
对于安卓:
Root
├─Assets
│ └─Plugins
│ └─Plugin_D
└─Anroid Plugin projects
└─Plugin_D project
我试图使它们成为项目根目录的所有子模块(忽略除插件文件夹之外的所有内容),但我无法将子模块创建成一个Root
文件夹。
作为奖励,将所有插件放在一个存储库中会很棒,这样我就可以轻松启动任何项目,然后有选择地添加/删除模块。
到目前为止,我所拥有的是在本地使每个文件夹成为子模块,但是这样项目设置过程非常繁琐/容易出错,而且我无法将本机插件项目与其各自的托管对应项进行版本控制。
对任何建议真的很感兴趣。
是的,您可以在单独的存储库中管理插件 A 到 D。但是,如果这四个插件是相关的,您最好在四个分支的存储库中管理它们。
然后,您可以使用git subtree
为要应用于项目的子文件夹添加插件。
比如如果要在Assets/Plugins
中添加Plugin_C,可以使用:
git subtree add --prefix=Assets/Plugins/Plugin_C <URL for pluginC repo> master
如果要将plugin_D添加到Android/
,可以使用:
git subtree add --prefix=Android/Plugin_D <URL for pluginD repo> master