2012-01-18 72 views
1

總結問題:將github存儲庫嵌入到mercurial(窯)存儲庫中 - 它的集成程度如何?

是GitHub的託管子庫一水銀/窯倉庫內可能的,如果有,它們會自動更新/時由hg clonehg commit命令操作父Mercurial庫克隆?

詳細問:

從我的問題,下面就這是這樣回答出色here,我的一些第三方的代碼是我下載前一陣子從GitHub上的開源工作文件夾。由於在那個階段我沒有使用版本控制,那些只有標準文件夾的文件夾現在已經作爲子庫存儲在mercurial中。

這顯然不理想,至少有一點,新版本的庫可能有錯誤修復或我希望在未來使用的新功能。我也可能需要在本地自定義一些庫。

我從閱讀this link可以看到有可能知道這些git服務器URL(和修訂版),因此我可以直接從它們的父回購庫中克隆github託管的庫。

我是否正確地說,當我克隆父(mercurial)回購,這些文件將被從github,而不必分開管理這個使用git?

還有什麼不清楚的是,如果我這樣做,並且發現代碼可能需要從該github克隆庫中定製,我是否需要使用git來管理本地文件的修訂版本,或mercurial通過代理做到這一點?如果我是hg commit -S會mercurial調用git代表我處理該問題?

回答

1

我是否正確地說,當我克隆父(mercurial)回購,這些文件將被從github,而不必單獨管理這個使用git?

是的,包含子庫的Mercurial存儲庫的克隆也會觸發subrepos的克隆。它真的是happens on update。 Mercurial通知.hgsub文件併爲您發佈所需的hg clonegit clone命令。它使用.hgsubstate中的信息來確切知道要檢出的版本。

子庫可以託管在任何地方。對於一個Git subrepository聲明如下

foo = [git]https://github.com/user/repo.git 

水銀會發布相應的克隆命令:

git clone https://github.com/user/repo.git foo 

它當時你reponsibility以後進入foo回購和使用Git的需要來獲取新的提交。在獲取/提取新提交後,您可以進行頂級提交,以便在.hgsubstate文件中記錄子文件的新狀態。在這個意義上,使用hg summary來查看subrepo是否髒。

[...]我需要使用git來管理本地文件的修訂,或者mercurial會通過代理來做到這一點嗎?例如,我是爲了hg commit -S會以我的名義mercuial調用git來處理?

當你編輯文件和製作頂級hg commit,水銀會確保先提交subrepo(如果你使用hg commit -S或者ui.commitsubrepos=True)。如果您進行頂級推送,則Mercurial將始終首先推送subrepos,以便始終在服務器上進行一組一致的更改。