我將庫從Git轉換爲Mercurial,併爲我們的生產開發創建了一個命名分支production
。不幸的是,一週後,我們剛剛意識到production
分支處於錯誤的變更集。如何在Mercurial中將命名分支與不同的變更集相關聯?
儘管我們已經對存儲庫進行了一些更改,但尚未對production
分支提交任何提交。我需要以某種方式將production
名稱與正確的更改集重新關聯,或者刪除該分支並重新創建它。
這樣做的最好方法是什麼?
我將庫從Git轉換爲Mercurial,併爲我們的生產開發創建了一個命名分支production
。不幸的是,一週後,我們剛剛意識到production
分支處於錯誤的變更集。如何在Mercurial中將命名分支與不同的變更集相關聯?
儘管我們已經對存儲庫進行了一些更改,但尚未對production
分支提交任何提交。我需要以某種方式將production
名稱與正確的更改集重新關聯,或者刪除該分支並重新創建它。
這樣做的最好方法是什麼?
通過使用mq
擴展名,您可以非常輕鬆地完成此操作。顯然,這需要每個人都獲得一個新的版本庫。
如果production
分公司在變更869創建的,你想它變更842,你可以說:
hg strip 869
hg update 842
hg branch production
這將從庫中刪除變更869(及其所有後代),編號爲0,1,3,5後續更改集以填補空白,然後將production
名稱分配給正確的更改集。
如果沒有「提交到production
分支」,那麼該分支尚不存在。在mercurial的命名分支中,分支名稱是已確認變更集上不可磨滅的標籤。變更集永遠不會改變它所在的分支。我打算假設你至少有一個變更集與production
分支標籤,或者這變成了一個無問題的問題。
如果採取這些行動,我想你會沒事結束:
hg update
你希望是生產頭修訂hg branch production
這只是說下一個提交應該有產品標籤hg commit
你現在必須與標籤的新承諾現在production
當人們這樣做交流孤獨的只是生產:
hg clone repopath#production
或
hg clone -r production repopath
或更新到它
hg update production
他們會得到你想要發展的分支。舊的changeset(s)將仍然(並且始終)具有production
標籤,但這可能沒問題。如果真的不好,你可以重建回購並從這些提交中刪除標籤,但上述過程可以讓人克隆/更新production
正確的東西,所以你應該沒問題。
我剛試過這個,它不起作用。 'hg branch production'說「中止:同名分支已存在(使用'hg update'切換到它)」 – 2010-10-19 22:23:10