2011-03-24 31 views
7

我發現在這裏似乎是非常類似的問題,看起來好的答案是什麼;但由於某種原因,我似乎還無法弄清楚如何讓這個工作。我擔心的是,這可能根本不可能。當其他團隊成員正在使用SVN時,在本地使用Hg並推送到SVN回購 - 這可能嗎?

以下是這種情況:我正在研究一個使用中央SVN存儲庫作爲我們的版本控制系統的小團隊。我的雙人程序員和我感到沮喪,沒有選擇本地提交(並且不想經歷使用SVN分支的麻煩),所以我們研究了使用Git還是Mercurial作爲SVN客戶端,發現hgsubversion似乎有能力做我們想做的事情:在Hg存儲庫上本地工作,在本地提交,並且只有在我們準備好時才推送到SVN。

當時間來到推,我們收到了來自汞柱此錯誤信息:我想知道

Sorry, can't find svn parent of a merge revision. 

如果問題是,我們必須從SVN拉的變化讓我們的隊友的更新,然後融合我們當地的變化,現在Hg無法弄清楚如何讓SVN快樂?這似乎是我從其他SO問題得到的消息&我看過的答案;然而,在這些情況下(做hg rebase --svn)分配的建議似乎對我們也不起作用;同樣的「無法找到svn父母」的消息給出。

這甚至可能嗎?或者當團隊中的其他開發人員直接對SVN進行更改時,是否更值得付出代價?

+0

既然你提到Git ..我經常使用git-svn與Subversion版本庫進行交互。我可以通過SVN或通過Git直接與其他人進行交互,並且不會將問題推回到Subversion(重新綁定後)。我沒有使用hg-svn連接器進行比較。 – 2011-03-24 20:58:23

+0

你不能將hg合併到svn中。您需要將Hg回購轉換爲線性版本歷史記錄。 HTTP://計算器。com/questions/5336192/steps-needed-to-allow-hgsubversion-svn-clone-to-push-back – Rudi 2011-03-25 08:12:31

回答

5

問題是,hgsubversion無法將Mercurial合併到Subversion。只要你不創建任何合併變更集,一切都應該正常工作。 (FWIW Subversion合併工作正常,因爲hgsubversion只是無視合併信息並創建常規的單親變更集。)您所描述的問題是hgsubversion的已知限制之一;其他列在hg help subversion

爲了解決此問題,您可能需要考慮使用rebase擴展名,以確保推送的歷史記錄是完全線性的。

6

我已經這樣做了一年多了,而且效果很好。我得到了甜美甜美的DVCS愛和其他人,呃...不。我用hgsubversion作爲我的橋樑。我對hg-svn有很多麻煩。因人而異。

我用this來設置並從此一直愛它!

需要注意的是,您不能使用Mercurial合併分支之間的更改。你仍然可以在分支上工作(使用hg up [some-branch]),但是當它把它合併到主幹時,你需要提交,推送到some-branch,然後使用subversion合併some-branch到主幹。

我已經準備了詳細描述此過程的博客文章。你可以在這裏看到:http://xinmyname.tumblr.com/post/11305033055/subversion-mercurial-branches-oh-my

祝你好運!

+1

Andy,我喜歡你的提示,關於如何務實地處理Hg和SVN之間的分支問題。你能否詳細說明如何做到這一點?我想這樣做(SVN是我的上游項目,我有一組我想要應用的更改,但守門員希望我在接受併合併到SVN中繼之前先將其提交到不同的SVN分支)。所以目前我用hgsubversion克隆了SVN的trunk。我應該直接用SVN創建一個分支嗎?然後使用hgsubversion來克隆這個分支,然後我的提交以後去哪裏? – 2011-10-08 04:30:40

+0

是的,我想要更多的細節。我嘗試使用hg,而其他人都使用SVN,但似乎毫無意義,如果我本地不能擁有不同的分支。它聽起來像是你可能不得不手動推送更改到hg分支?所有SVN關心都是線性歷史,對嗎?如果我還沒有準備好提交SVN,我可以在幕後有多個分支嗎?這次我帶着書籤去了,但不確定那是我真正想要的。 – nportelli 2011-10-10 12:56:06

+0

我想這將是一個值得博客的博客,呃?我會嘗試今天晚上的工作併發佈一個鏈接。是的,你必須手動將更改回推到SVN。至少,據我所知。也許有人知道更好的方法? – 2011-10-10 17:07:51

相關問題