2011-07-26 8 views
2

我有一個存儲庫,其中有三個子文件夾。
A,B和一個核心文件夾。在mercurial中使用子庫來「共享代碼」

我需要A和B中核心文件夾的文件。因此,核心文件夾中的每個文件都應該位於A和B中的另一個文件夾中,並且對文件的每個更新都應提交到「核心」,反之亦然。
所以我試圖讓核心文件夾到一個subrepository和文件夾B爲例它添加到A和B.

所以下面的.hgsub www = ../core
在主存儲庫線在。 hgsub core = core

我認爲也有一些是我做錯了,但也許你有一個提示如何實現我想要的東西:)

(更新)
澄清:
庫包含不同應用程序的「項目」。
A是Android,B是iOS。 「核心」包含HTML + JS文件,後來在Android和iOS項目中使用它們來構建具有phonegap的應用程序。

+0

子存儲庫必須是完整且獨立的存儲庫,而不是回到同一存儲庫中不同文件夾的鏈接。 A和B有什麼關係? –

+0

A和B是兩個不同的項目嗎? –

回答

8

如果我理解你的權利,你有這樣的:

 
repo 
    | 
    +-- core   <--+ 
    +-- A    | 
     +-- core  ---+ \A\core and \B\core should be equal to \core 
    +-- B    | 
     +-- core  ---+ 

中沒有任何水銀,這將有助於你與此有關。

什麼你可以做的是這樣的:

 
core-repo 
    +-- (content) 

repo 
    +-- A 
     +-- core  --- sub-repo pointing to core-repo 
    +-- B 
     +-- core  --- sub-repo pointing to core-repo 

這將允許你提交修改到內部的,推子回購,再拉和更新到子回購B的內部,保持它們同步。

+0

非常感謝。 在我的構建腳本中,我將核心文件夾的內容複製到A和B的相應子文件夾中。現在的挑戰是讓開發環境工作:) – hering

+2

我對Jenkins根本不熟悉。在任何情況下,子回購都會鏈接到該存儲庫的特定修訂版本。換句話說,如果你改變了A \ core下的東西,提交,然後推送,即使你拉入B \ core,你仍然需要更新並提交repo來記錄新的changeset鏈接。 –