2011-04-10 54 views
9

這裏回購雲:如何處理Git的子模塊上,能轉化爲水銀

$ cat .gitmodules 
[submodule "utils/external/firepython"] 
    path = utils/external/firepython 
    url = git://github.com/darwin/firepython.git 
[submodule "utils/external/textile"] 
    path = utils/external/textile 
    url = git://github.com/jsamsa/python-textile.git 

雖然這仍然是一個Git回購協議,我需要運行git submodule init,之後一些奇蹟發生。由於我現在已經將回購轉換爲Mercurial(使用hgext.git擴展名),我不知道該怎麼辦。有沒有一個等效的過程(我需要我的Mercurial回購中的2個Git模塊)?

回答

12

Mercurial支持subrepositories不同類型:Mercurial,Subversion和Git。所以,你可以創建一個.hgsub文件,

utils/external/firepython = [git]git://github.com/darwin/firepython.git 
utils/external/textile = [git]git://github.com/jsamsa/python-textile.git 

,並且將通知水銀,使您的Git代碼庫的克隆時,Mercurial庫被克隆。你需要做的Git克隆自己的第一次,或從別的地方複製他們在您的硬盤上:

$ git clone git://github.com/darwin/firepython.git utils/external/firepython 
$ git clone git://github.com/jsamsa/python-textile.git utils/external/textile 
$ hg add .hgsub 
$ hg commit -m 'Added Git subrepositories' 

然後你會注意到,水銀又增加了一個.hgsubstate文件到您的信息庫,存儲有關Git的信息subrepositories。此文件是必需的,以便Mercurial知道在製作新的Mercurial克隆時從您的子庫中檢出哪個版本。

我的一位同事寫了一個subrepository guide,你可能會覺得有用。