2014-01-23 38 views
1

我在Git中有大量項目依賴於對方。
這些項目中的每一個解決了不同的問題,並對應於不同的git存儲庫。最後,我的項目架構結束了很多繼承,我想分解重複的條目。在幾個項目中共享子模塊

總之,我的項目層次可以被看作是這樣的:

Project 1 

Project 2 
    \ 
    - Project 1 

Project 3 
    \ 
    - Project 1 

Project 4 
    \ 
    - Project 2 
    - Project 3 

所以Project 1被複制(在Project 4方面)既是Project 2Project 3的子模塊。另外:在Eclipse中,我只能導入Project 1一次,因此我必須選擇,然後可能必須更新依賴關係(例如Android ADT插件,硬件代碼路徑到庫項目,使用相對路徑:s )。

更糟糕的是,對我導入的項目所做的更改,修改了導入項目的存儲庫,因此要有一個「同步」工作區,我必須提交修改,然後推送它們並將它們拉入第二個存儲庫項目無法導入。


有沒有人有這樣的問題的解決方案? 什麼,我想,會是這樣的事情:

aFolder 
    \ 
    - Project 1 
    - Project 2 --> has submodule Project 1 
    - Project 3 --> has submodule Project 1 
    - Project 4 --> has submodule Project 2 and Project 3 

於是就這樣,Project 2Project 3指向同一個存儲庫,然後在Eclipse進口只有一次,總是同步的。

不幸的是,混帳不允許創建使用路徑../mySubmodule一個子模塊,因爲../是庫外...

回答

0

我也有類似的需要,不得不重新安排我的資料庫。

我使用Visual Studio而不是Eclipse,所以我想澄清我使用的術語。

在VS中,「解決方案」由1+「項目」和配置內容(如依賴關係)組成。 「項目」是產生dll或exe的單元的集合。

倉庫的佈局是這樣的:

solution "Solution 1" [repository] 
    -> project "Project 1" [submodule] 

solution "Solution 2" [repository] 
    -> project "Project 1" [submodule] 
    -> project "Project 2" [submodule] 
    (dependency "Project 2" depends on "Project 1" is stored directly in "Solution 2") 

solution "Solution 3" [repository] 
    -> project "Project 1" [submodule] 
    -> project "Project 3" [submodule] 
    (dependency "Project 3" depends on "Project 1" is stored directly in "Solution 3") 

solution "Solution 4" [repository] 
    -> project "Project 1" [submodule] 
    -> project "Project 2" [submodule] 
    -> project "Project 3" [submodule] 
    (dependency "Project 2" depends on "Project 1" is stored directly in "Solution 4") 
    (dependency "Project 3" depends on "Project 1" is stored directly in "Solution 4") 

所以你最終庫量的兩倍:

  • 「項目1」
  • 「項目2」
  • 「Project 3」
  • 「Project 4」
  • 「溶液1」
  • 「溶液2」
  • 「解決方案3」
  • 「解決方案4」

與代碼和由依賴關係的「保持器」存儲庫和代碼儲存庫一個子模塊。

+0

我不清楚你的回答。這是迴應嗎?據我瞭解,你遇到了同樣的問題,你也在尋找解決方案,是嗎? –

+0

不,我按照上述方式組織我的存儲庫,找到了解決方案。我希望適用於VS的存儲庫佈局也適用於Eclipse。嘗試將代碼和配置文件(包含依賴關係等)不包含在同一個存儲庫中,而是將代碼放在一個存儲庫中,並在「主」項目中將所有依賴項和代碼作爲子模塊。希望這能夠澄清我的答案。 – Onur