2012-12-13 103 views
0

我有什麼似乎是一個獨特的情況。我需要一箇中央Mercurial存儲庫,它可以從Subversion服務器獲取,其克隆也可以從同一個Subversion服務器獲取更新。這些更新將會通過Mercurial提交給Mercurial存儲庫以及提交的更改。如何克隆hgsubversion庫並保留Subversion版本信息?

現在,hgsubversion 似乎首先運行良好,克隆Subversion存儲庫,允許我通過Mercurial提交更改,並正確地從Subversion存儲庫中提取更新。但是,當我克隆hgsubversion存儲庫時,克隆會嘗試重新整個Subversion存儲庫,儘管它已經存在於存儲庫中。

有沒有辦法解決這個問題?有沒有更好的方法來設置它?

僅供參考,我當前的設置是存儲在Mercurial存儲庫中的Subversion存儲庫。 Mercurial提交也提交了.svn文件夾,因此克隆存儲庫的任何人都可以簡單地在該文件夾上運行SVN Cleanup,然後SVN Update從Subversion服務器獲取最新文件。然後他們運行hg Commit,然後將文件推送到中央Mercurial存儲庫。這工作適度,但我更喜歡找到更好的解決方案。

注意:我不需要將更改推回到Subversion服務器。我只需要改變。

回答

0

顯然,這是在「汞幫助顛覆」回答:

When interacting with Subversion, hgsubversion relies on information 
about the previously converted changesets. This information will not be 
updated if pushing or pulling converted changesets to or from any other 
source. To regenerate the stored metadata, run "hg svn rebuildmeta 
[URI]". This must also be done if any converted changesets are ever 
removed from the repository. 

使用「汞SVN rebuildmeta [URI]」非常完美解決克隆無法正常拉新修訂的問題。

0

中央服務器(即使在Mercurial中)是中央服務器。如果它克隆了Subversion回購並且有拉動週期爲什麼客戶重複這個操作?這是浪費時間......但它不能破壞任何東西,因爲

我當前的設置是存儲在Mercurial存儲庫中的Subversion存儲庫。

錯了。不「優雅」,「無效」,「容易出錯」,但 - 錯誤!

Subversion repo(含hgsubversion)的水銀克隆是Mercurial經典回購,它在外部具有Subversion(作爲目標之一,在[paths]中)以及一些鏈接特定的元數據。

+0

對不起,我不明白你的答案。克隆的hgsubversion存儲庫再次拉動整個SVN存儲庫,通過版本修訂,不會浪費很多時間,_and_會導致一個_huge_新頭。我們正在做的事情是不能接受的。中央存儲庫正確地只提取所需的修訂版。我也需要這種行爲與存儲庫的克隆。 – Josh

+0

另外,雖然我同情你對SVN/Mercurial設置的響應,但我發現這是我需要的唯一解決方案:克隆也可從SVN存儲庫中提取的Mercurial存儲庫的能力。 Mercurial克隆_必須能夠從SVN存儲庫中提取。如果你有更好的解決方案,我非常樂於接受建議。 – Josh

+0

@Josh - 好吧,我會在一段時間後測試你的設置(現在必須在我最喜歡的廚房上工作)。但我還是不明白兩件事:1。爲什麼你(想要)從克隆中提取SVN-repo,*如果* svn-revision已經在中央Mercurial repo上,這是所有克隆上的默認目標。2.當你看到「Mercurial repo內的SVN-repo」時 - SVN超過hgsubversion,初始克隆的結果是** Mercurial repo **。 [與Subversion交互](http://mercurial.aragost.com/kick-start/en/hgsubversion/)來自aragost Trifork的「Mercurial Kick Start」很有用 –

相關問題