如何对重叠的文件夹结构进行版本控制?



多年来一直在思考这个问题,对任何建议都非常感兴趣。

一个简单的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_DAnroid 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

相关内容

  • 没有找到相关文章