2009-07-02 120 views
21

我有一個非常舊的項目,直接包含來自另一個項目的源代碼,而不是將其作爲庫鏈接。回到糟糕的日子,當我將所有東西都保存在CVS中時,我在供應商分支上有外部代碼,並定期導入。現在我的項目在git中,將外部項目作爲子模塊包含在內是更有意義的。但是,有一個問題:外部項目已經遷移到Mercurial。我找到了git-hg和hg-git項目,但我不確定是否有人正確處理子模塊。git submodule from Hg repo?

有沒有辦法創建一個git子模塊,指向一個Hg repo而不是git repo?

回答

12

由於hg-git沒有提到子模塊不支持然而,這僅留下一個手動選項:

  • 設置一個Git倉庫的地方,你要推送權限,
  • 將其添加爲遠程Git然後
  • 從您的項目中運行hg gpush

例如:

$ cd hg-git # (an Hg repository) 
$ hg gremote add origin [email protected]/schacon/hg-git.git 
$ hg gpush 

了Git回購將代表你的子模塊,但如果你修改並推送這個子模塊,你仍然必須從Git的回購實際汞回購拉。

其他偉大的git-hg命令列在此「rosetta stone」中。

+1

示例中存在拼寫錯誤。如上所述,「$ hg push」應該是「$ hg gpush」。除此之外,@ VonC的回答對我非常有幫助。謝謝! :-) – 2009-08-05 23:51:40