2017-06-15 63 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的重量更輕,更靈活。子模塊和子樹之間沒有更好的,但更適合不同的情況。 –

相關問題