2011-09-01 22 views
5

我已經閱讀了有關Mercurial子庫的每個問題,我可以也不知道它是如何工作的。我們在IIS上使用hgweb.cgi,因此我們有http://路徑指向我們所有的回購站。在克隆中進行更改時,如何使工作流保持最新的Mercurial子庫?

這是基本的佈局:

/Libraries - http://server/Libraries 
/Project1 - http://server/Project1 
/Project1/LibrariesSubrepo - http://server/Project1/LibrariesSubrepo (clone of libraries) 
/Project2 - http://server/Project1 
/Project2/LibrariesSubrepo - http://server/Project2/LibrariesSubrepo (clone of libraries) 

在.hgsub文件,我的路徑設置爲:

LibrariesSubrepo = LibrariesSubrepo 

如果我要對項目的工作,我從他們克隆該服務器到我的工作站,所以我有一個Project1和Project2的克隆,它也自動拉取subrepos。

在本地工作站的project1中,我對/ Project1/LibrariesSubrepo中的文件進行了一些更改。我如何確保這些更改使其恢復到服務器上的庫的源回購?我是否必須手動將subrepo中的更改推送到subrepo的源回購?

我希望能夠在本地對Project1回購進行更改,然後提交/推送這些更改,然後在Project2中,我應該能夠從應更新Project2/LibrariesSubrepo的服務器提取更改爲最新版本。

回答

4

你絕對可以從你的LibrariesSubrepo手動推Project1到服務器上的Libraries庫,然後從Libraries手工拉成LibrariesSubrepo在Project2的克隆。

但是,你也可以在服務器上鍊接subrepos:

  1. share extension可以創建一個共享文件夾.hg兩個或多個存儲庫。在服務器上執行此操作,以便服務器上的三個子副本實例共享.hg文件夾。

  2. 符號鏈接.hg文件夾 - 更多oldschol,它只適用於您可以在服務器上創建符號鏈接(Unix服務器或Windows Vista及更高版本,具有正確的權限)。

  3. 在服務器上只保留一個subrepo,但在hgweb配置中暴露三次。就像這樣:

    [paths] 
    Project1     = /repos/Project1 
    Project1/LibrariesSubrepo = /repos/Libraries 
    Project2     = /repos/Project2 
    Project2/LibrariesSubrepo = /repos/Libraries 
    

在所有情況下,實際上只有三個服務器上的存儲庫:Project1Project2Libraries

+0

感謝您的回答...良好的信息! – jpshook

+0

還有一個問題:在使用Subrepos時,您是否應該首先在子文件中提交,然後在父文件庫中進行提交還是隻在父文件中提交? – jpshook

+1

請將不相關的問題作爲新問題提出,並請在Mercurial郵件列表上提問。這是一個更好的討論論壇。 –

相關問題