2010-03-14 63 views
1

我正在使用hg-subversion,並且我有兩個不同的hg倉庫,一個來自我們的svn幹線,一個來自幹線分支。我想以某種方式將它們鏈接起來。在歷史上的某個時刻,兩個汞儲存庫將是相同的,有什麼方法可以加入它們?Mercurial如何合併2共享共同祖先但不是相同回購克隆的倉庫

換句話說,是否有一種方法可以從Hg內部關聯儲存庫?

我目前使用的技術只是將第二個存儲庫導出到他們共享的修訂版的工作副本的頂部,然後將該工作副本作爲Hg中的一個分支提交,但我以這種方式丟失了歷史記錄。

任何意見將是巨大的

+0

這是一個重複的:http://stackoverflow.com/questions/12843/how-to-combine-two-projects-in-mercurial – 2010-06-03 18:27:19

回答

1

你可以嘗試導入兩個回購成一個彷彿無關,然後將它們合併。 (當你說他們都有一個共同的祖先,你的意思是那些祖先有相同的版本ID?如果是的話有一個很好的機會,這將很好地工作。)

hg clone repoA 
hg pull -f repoB # may not need -f 
hg merge 
+0

他們有一個共享的SVN修訂ID是的,因爲一個實際上是一個分支。 – sylvanaar 2010-03-15 10:30:48

1

你能重新克隆的顛覆存儲庫,給Subversion版本庫的根作爲參數而不是樹幹或其中一個分支?我使用了hg clone svn+ssh://foo/bar/baz一次,其中svn+ssh://foo/bar/baz/trunk是主幹,svn+ssh://foo/bar/baz/branches/quux是一個分支,最後我在Mercurial中有兩個命名分支,代表Subversion主幹的「默認」分支和代表類似Subversion分支的「quux」分支。

如果您在現有的hg倉庫中有外出的變更集,那麼您可能會遇到一些問題。如果只有幾個傳出更改集,則可能會啓用mq擴展並將變更集轉換爲補丁。然後可以將這些修補程序重新應用於新克隆(在適當的命名分支中),並最終推送到Subversion。

+0

感謝您的建議。我肯定會嘗試一下 – sylvanaar 2010-04-29 12:46:00