我一直在努力用這個項目採取哪種方法,並決定從社區中接受一些建議。擁有插件庫的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是否支持管理這種樹?有沒有你推薦使用的工具?
對於'混帳submodule',這將使插件功能也可用於框架。它是否符合您的要求? –
不,我不需要依賴插件的框架。我需要插件來依賴框架 – ZivS