2010-10-12 75 views
0

我將庫從Git轉換爲Mercurial,併爲我們的生產開發創建了一個命名分支production。不幸的是,一週後,我們剛剛意識到production分支處於錯誤的變更集。如何在Mercurial中將命名分支與不同的變更集相關聯?

儘管我們已經對存儲庫進行了一些更改,但尚未對production分支提交任何提交。我需要以某種方式將production名稱與正確的更改集重新關聯,或者刪除該分支並重新創建它。

這樣做的最好方法是什麼?

回答

1

通過使用mq擴展名,您可以非常輕鬆地完成此操作。顯然,這需要每個人都獲得一個新的版本庫。

如果production分公司在變更869創建的,你想它變更842,你可以說:

hg strip 869 
hg update 842 
hg branch production 

這將從庫中刪除變更869(及其所有後代),編號爲0,1,3,5後續更改集以填補空白,然後將production名稱分配給正確的更改集。

0

如果沒有「提交到production分支」,那麼該分支尚不存在。在mercurial的命名分支中,分支名稱是已確認變更集上不可磨滅的標籤。變更集永遠不會改變它所在的分支。我打算假設你至少有一個變更集與production分支標籤,或者這變成了一個無問題的問題。

如果採取這些行動,我想你會沒事結束:

  1. hg update你希望是生產頭修訂
  2. hg branch production這只是說下一個提交應該有產品標籤
  3. hg commit你現在必須與標籤的新承諾現在production

當人們這樣做交流孤獨的只是生產:

hg clone repopath#production 

hg clone -r production repopath 

或更新到它

hg update production 

他們會得到你想要發展的分支。舊的changeset(s)將仍然(並且始終)具有production標籤,但這可能沒問題。如果真的不好,你可以重建回購並從這些提交中刪除標籤,但上述過程可以讓人克隆/更新production正確的東西,所以你應該沒問題。

+0

我剛試過這個,它不起作用。 'hg branch production'說「中止:同名分支已存在(使用'hg update'切換到它)」 – 2010-10-19 22:23:10

相關問題