2011-02-12 83 views
4

在經典VCSS(CVS/SVN)我可以與一些分支標籤,使他們出現在另一支以及(從那裏可以再次發散)的一個分支添加新的文件/文件夾,然後選擇「標籤」他們。這可以通過將工作副本更新爲特定狀態然後設置分支標籤來實現。Mercurial中的部分(每個文件/文件夾)分支/標記?

如何在Mercurial中實現類似的功能?我搜索了很多,但似乎沒有辦法只將幾個文件/文件夾移動到另一個分支上。

在我的情況下,一些歷史分公司收到了,現在應該移動到當前活動的分支(這是回購是從Subversion轉換爲水銀之前)一些更新。有什麼方法可以保留這些文件/這個文件夾的歷史嗎?或者我是否必須將這些文件的當前狀態重新引入其他分支(即從頭開始)?

旁註:兩個分支的提示之間有幾百個衝突的變化。這就是爲什麼我正在尋找一種替代方案來完成分支機構之間的合併(這也是一個問題,因爲其中一個分支機構在合併後將不再存在)。

回答

2

Mercurial transplant extensio n應該做的伎倆。移植將變更集重新應用到您選擇的分支。它通常用作將錯誤修復從一個分支移動到另一個分支的一種方式(即:從某個​​長期運行的分支對應於已發佈版本的代碼到活躍開發的默認分支)。

移植分佈與水銀,但您可能不得不通過添加以下行到Mercurial.ini來啓用它(或.hgrc):

[extensions] 
transplant= 

從TortoiseHg可以更新到目的地變更(即:您在哪裏放置修復),然後右鍵單擊要移動的變更集並選擇「移植到本地」。命令行幫助可以在上面的鏈接中找到。

一個警告是,移植適用於變更集,並且它想要應用整個變更集。因此,如果更改集包含您想要應用的一些更改以及一些您不需要的更改,那麼您需要做更多的工作。解決此問題的一種方法是使用histedit擴展名,並將這樣的變更集分成兩部分。這可能很複雜,如果您的repo本地不包含(如:如果它在某個服務器上),則不推薦使用它。強力選項將移植一個變更集,然後簡單地撤消不需要的變更,並將這些模塊作爲第二個變更集提交。

+0

感謝您的回覆。我將首先嚐試使用本地克隆,只是爲了確保。我曾經玩過移植擴展,但似乎是從相關克隆移植變更集。有問題的更改集只修改該特定文件夾,因此該方法應該可以工作。再次感謝。 – 0xC0000022L 2011-02-12 17:01:04

相關問題