2017-06-15 56 views
0

一直在思考这个问题,对任何建议都很感兴趣。如何版本控制重叠的文件夹结构?

A 简单的Unity游戏项目看起来像这样,在Git回购Root

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 

现在我真的希望有插件自己的版本(这样我就可以保持“距离”任何游戏项目开发它们),也保留了每个项目的相对位置。

的一点是:有多个子文件夹在同一subrepository(!)(!)。就像在单个(!)子库中有Assets/Plugins/Plugin_DAnroid Plugin projects/Plugin_D project一样。并与Plugin_C做休息,等

将是巨大的,有每个插件的仓库处的根部(保留其子文件夹的位置)。

Root 
└─Assets 
    └─Plugins 
    └─Plugin_A 

但重点是在同一个(!)插件库中有重叠的文件夹。像有一个存储库,包含包含其各自重叠的插件项目(iOS Plugin projects/Plugin_C project)的本机插件(Assets/Plugins/Plugin_C)和(!)。喜欢本作的iOS:

Root 
├─Assets 
│ └─Plugins 
│ └─Plugin_C 
└─iOS Plugin projects 
    └─Plugin_C project 

而对于安卓

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

我试图让他们都子模块项目根的(与忽略一切,但该插件文件夹),但我不能将多个子模块创建为一个Root文件夹。

作为奖励,这将是巨大的,在单个库中的所有插件,这样我就可以引导任何一个项目很容易,然后添加/删除选择性模块。


我至今就是使每一个本地文件夹的子模块,但这样一个项目安装过程是很乏味/容易出错,我也不能版各自的管理对应的本地插件项目。

真的对任何建议感兴趣。

+1

听起来像一个良好的使用.gitignore:主项目根目录会忽略X_Plugin_projects目录,那么*这些*目录中的每一个都将成为它们自己的git repos。 – Draco18s

+0

@ Draco18s感谢您的建议!我可以简单地使用子模块来做同样的事情,但是我无法通过这种方式版本化重叠的文件夹结构(请参阅上面的iOS插件内容)。 – Geri

+0

是的,我不知道这些。 – Draco18s

回答

1

是的,你可以在不同的仓库管理插件A到d。但是,如果这四个插件是相关的,你最好在四个分支的回购中管理它们。

然后,您可以使用git subtree为您想要应用于项目的子文件夹添加插件。

比如如果你想添加Plugin_C在Assets/Plugins,你可以使用:

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 
+1

该方法也可以用于回购是分开的。我更新了我的答案,你可以试试看。 –

+0

还有'git subtree pull'和'git subtree push',这样你就可以更新子文件夹中的插件,或者你可以推送它到插件回购:) –

+0

子模块是使用回购作为你的主要回购组件。但是对于你的情况,你需要为你的项目重用插件(多于一次),所以sutree的重量更轻,更灵活。子模块和子树之间没有更好的,但更适合不同的情况。 –

相关问题