2017-04-13 76 views
0

我一直在努力用這個項目採取哪種方法,並決定從社區中接受一些建議。擁有插件庫的Git倉庫

我們正在開發的開源框架,允許他人通過實現一些接口來使用其功能。通過實現這個接口,其他人基本上正在爲這個框架開發一個插件(或者至少我是這麼看的,並且會爲此問題的其餘部分調用它)。

我們使用git作爲框架的版本控制。 (最終會上傳到Github等)。 而且該項目是使用CMake構建的。

除了允許他人開發自己的插件的選項,我們有我們自己的一些實現,我們希望提供開源。這既是爲了提供一個通用的用法,也是爲了教程的目的(展示如何實現接口和其他用法檢查)。爲了模擬這種插件的真實世界的發展,我們的插件(我們稱之爲Plugin1)是在不同於框架的git倉庫中實現的。

爲了支持這個框架,這兩個插件的編寫,框架有哪些我們預計包含提供接口的實現CMake的項目文件夾中「插件」文件夾中。除了他們使用CMake之外,我們不會假設任何項目。 (以插件添加到樹 - add_subdirectory()通過腳本調用,通過該插件文件夾搜索)

所以基本上,我們有這樣的事情:

. (framework repository) 
├── CMakeLists.txt 
├── plugins 
│   ├── CMakeLists.txt 
│   ├── plugin1 
│   ├── plugin2 
│   ├── user_implemented_plugin_1 
│   └── other plugins... 
├── src 
├── tests 
└── etc... 

./plugins/下,每個插件是不同的git倉庫(一些我們自己的,一些可能是用戶實現)。 因此,爲了下載每個插件我們git clone每個回購(如果我們需要我們簽出一些特定的標籤)。

我們不希望用戶使用這種方式(他們應該使用make install框架或通過軟件包進行安裝),但對於我們的開發來說,這很方便。

這樣可以幫助我們在構建系統測試框架(使用簡單的腳本,下載插件回購)。 正如我所說最終這將成爲開源,我們希望開發人員下載框架以及我們開發的插件。 這裏可能會變得不方便,因爲用戶將不得不使用腳本來下載存儲庫,或者必須手動完成,我不確定這是最好的方法。

我的問題實際上更多的是建議和反饋的請求。 我環顧網絡尋找最佳實踐,例如這種發展,但找不到任何東西。 一些建議使用谷歌回購,但它似乎是一個矯枉過正。 一些建議使用git子模塊,但從我的理解來看,這是父代回購取決於子回購的情況,而我的情況則是相反。

我在做這個項目的一些菜鳥錯誤嗎? git是否支持管理這種樹?有沒有你推薦使用的工具?

+0

對於'混帳submodule',這將使插件功能也可用於框架。它是否符合您的要求? –

+0

不,我不需要依賴插件的框架。我需要插件來依賴框架 – ZivS

回答

0

爲目的,以使插件依賴於框架,可以從框架式回購的代碼添加到你的插件回購。假設你想在框架回購master分支的代碼適用於插件回購協議,則可以使用

git subtree add --prefix=user <URL for framework repo> master 
+0

如何使用此命令保持文件夾樹相同? – ZivS

+0

添加仍然使用'git clone'的方式在'。/ plugins'文件夾中添加倉庫,只需在'。/ plugins'的每個倉庫中使用'git subtree add'。 –

+0

好的,但是會給我什麼?它有什麼作用? – ZivS