2017-07-25 50 views
0

與git爲項目子模塊我有三個存儲庫:Ç(C++代碼)替代使用多個存儲庫

是獨立的項目和兩個取決於C。該協會已經取得了git的子模塊

我現在是一個新的項目d取決於一個創建,所以現在Ç被稱爲兩次

項目結構將類似於以下內容:

D 
|--A 
| | 
| C 
| 
|--B 
    | 
    C 

由於不同版本的D對應於不同版本的AB我想在檢查版本之間時讓它們保持同步。

我考慮去除子模塊協會和開關repo所有d。是否有意義?有沒有更好的方式來使用唯一的git?

謝謝

+0

這實際上是語言無關的,不需要提及特定的編程語言。 –

+1

嗨。是的,我知道,我只是爲了以防萬一:) 我知道有一些語言依賴工具,有時可能會有所幫助 – Stefano

+0

'git checkout --recurse-submodules'有什麼問題? – phd

回答

0

一種可以替代的,我使用的廣泛CMake的項目中子模塊,是讓所有的模塊,獨立的「庫」,並通過find_package() CMake的命令使用它們(見例如https://cmake.org/Wiki/CMake:How_To_Find_Librarieshttps://stackoverflow.com/a/20857070/1274747 )。每個依賴項都提供了自己的查找腳本,它與庫一起安裝,並且依賴項目可以使用它來本地化庫。

項目的方式不直接依賴於特定的「依賴」提交(但仍可以依賴於特定的庫版本,因爲版本依賴項也可以通過查找腳本來處理,請參閱FindBoost.cmake,它們也是如果指定則處理所需的Boost庫版本)。

1
  • 如果你的項目D是促成回購AB,則可以將其添加爲子模塊爲您的項目D

    但是,簽出項目D的某個版本時,無法同時將子模塊簽出到某個版本。解決方法是對AB標籤使用D的相關版本,並執行腳本將結帳AB轉換爲相關版本。

    v3.0D是關係到ABv2.0v1.0的版本,所以你可以在Av3.0.2.0B與版本v3.0.1.0添加標記。當您爲D結帳v3.0時,您可以運行腳本來結帳AB,版本以v3.0*開頭。

  • 如果你的項目D不利於回購AB,你可以刪除子模塊的關聯。 AB的代碼就像您的項目D的子文件夾和文件夾A和文件夾B的版本可以一直與您的項目D的版本同步。

+0

是的,我正在考慮爲此創建一個自定義腳本。以正確的方式命名它,可以讓你將它用作git擴展:) – Stefano

+0

是否使用git擴展取決於你正在使用哪個工具git repo。如果您使用git命令行來操作git repo,則無法使用git擴展,您可以直接執行腳本來檢出所有相關版本的子模塊。 –