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

时间:2017-06-15 20:07:42

标签: ios git unity3d plugins version-control

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

一个简单的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上拥有每个插件的存储库(保留其子文件夹位置)会很棒。

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

对于Android:

Root
├─Assets
│ └─Plugins
│   └─Plugin_D
└─Anroid Plugin projects
  └─Plugin_D project

我尝试将它们全部设置为项目根目录的子模块(忽略除插件文件夹之外的所有内容),但我无法将多个子模块创建到单个Root文件夹中。

作为奖励,将所有插件放在一个存储库中会很棒,因此我可以轻松地引导任何项目,然后有选择地添加/删除模块。

到目前为止,我将每个文件夹设置为本地子模块,但这样一个项目设置过程实际上非常繁琐/容易出错,我也无法使用各自的托管对应版本对本机插件项目进行版本化。

对任何建议都很感兴趣。

1 个答案:

答案 0 :(得分:1)

是的,您可以在单独的存储库中管理插件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