2013-11-21 131 views
7

我有一個相當大的項目,有很多依賴關係。該項目存儲在一個git存儲庫中,並且依賴項存儲在作爲子模塊鏈接的專用git存儲庫中。依賴關係可以有更多的依賴關係(再次,使用git子模塊)。git存儲庫中的依賴管理(使用子模塊)

這效果很好。但是,如果兩個依賴關係需要第三個依賴關係,我會在更新時遇到問題。

依賴關係圖如下所示:

[Main Repo] 
    | 
    |-- [ModuleA] 
    |  | 
    |  \-- [ModuleC] 
    | 
    \-- [ModuleB] 
      | 
      \-- [ModuleC] 

現在我更新ModuleA和ModuleB子模塊指針。這樣,兩個模塊都保持獨立。但是,這是很多工作。

這個問題在大型項目中通常如何解決?我正在尋找最佳實踐來解決這類問題。

謝謝!

+0

我明確地希望確保ModuleC始終與我在項目中使用的相同(我知道子模塊機制允許簽出不同版本)。 –

回答

1

在更大的項目中,你想要的是保持你所有的依賴一個級別。

這並不意味着ModuleAModuleB不保留自己的依賴關係ModuleC

這意味着您當前的主要父回購包含對ModuleC的依賴關係,該回收作爲C的對象版本。
這還允許您檢測何時必須覆蓋依賴關係,因爲在您的情況下,對於您的兩個子模塊之一:對ModuleCModuleAModuleB的依賴關係必須由您的主Repo中的ModuleC覆蓋。

0

我們使用Quack從其他git存儲庫中提取特定模塊。我們需要提取代碼而不提供整個代碼庫 - 我們需要從該龐大的存儲庫中獲取特定的模塊/文件,並且每次運行update時都應該更新。

所以我們以這種方式實現的,

創建配置

name: Project Name 

modules: 
    local/path: 
    repository: https://github.com/<username>/<repo>.git 
    path: repo/path 
    branch: dev 
    other/local/path/filename.txt: 
    repository: https://github.com/<username>/<repo>.git 
    hexsha: 9e3e9642cfea36f4ae216d27df100134920143b9 
    path: repo/path/filename.txt 

profiles: 
    setup: 
    tasks: ['modules'] 

採用上述配置,創建一個從所提供的github倉庫1個目錄中第一個模塊配置中指定,另一種是從給定的回購拉和創建文件。

其他開發人員只需要運行

$ quack setup 

並將其拉離上述配置的代碼。

希望這可以解決您重複使用多個模塊的問題。

相關問題