2011-03-24 82 views
30

我在Bitbucket和我的本地機器上有一個Mercurial repo,它們都是鏡像,是最新的。我創建了一個功能分支,反映在兩個回購協議中。我在功能分支中完成了所有工作。使另一個分支默認?

功能分支現在已完成,我現在要將其設置爲主repo和本地副本的默認值。我不關心默認分支,功能分支中已經有足夠的工作,我所要做的就是將它指定爲新的默認分支。

我不認爲我想合併也不應該?我該如何做到這一點,使本地和遠程都不會感到困惑?

+1

當我開始使用Mercurial時,我在處理分支名稱方面有類似的嘗試,但[已被建議做得更好](http://stackoverflow.com/questions/1405604/managing-release-branches-in-mercurial)。 – 2011-03-24 20:06:17

回答

24

剛剛合併feature-branchdefault然後關閉feature-branch

$ hg checkout default 
$ hg merge feature-branch 
$ hg commit 
$ hg checkout feature-branch 
$ hg commit --close-branch 

有沒有更乾淨和明智的方式(即我所知道的),以「讓feature-branch默認」。

一兩件事,就不會那樣好,但你可以做的,是讓承諾default上的feature-branch頂部:

$ hg checkout feature-branch 
$ hg branch default 
$ hg commit 

但是,這將在default分支,留下兩個頭這是不理想的。

+0

正在希望更多的東西像切換和重命名,但如果這是這樣的話!感謝您的快速響應.. – dartdog 2011-03-25 13:30:01

7

我succeded不通過關閉默認分支合併。

在我的開發庫的工作目錄:

$ hg update default 

$ hg commit --close

那麼我的開發分支成爲新的默認分支。 但我不知道爲什麼我的開發分支被選爲 作爲新的默認規則。 我認爲這是因爲它是我的提示? (或者最後一次修改的分支?(提示?))

我也認爲你有下一次重複。 因爲我認爲我選擇的分支名稱被「默認」名稱「覆蓋」。

這將是不錯的分公司名稱。

DEV-項目名稱,version.x =默認

問候

+0

另一個好方法... – dartdog 2011-06-04 15:28:18

+0

真棒回答... – 2012-11-21 15:40:23

17

由於水銀2.4,您可以創建一個名爲書籤和@水銀將簽出該修訂新的克隆。

不過,我還是會盡量堅持使用default作爲其中主要的發展發生了分公司。這樣做將導致對已經使用水銀開發商驚喜最少的 - 在水銀維基describes the standard way to use branches

如果按照使用default作爲發展的主要分支的常規建議,那麼你應該,你把它合併前關閉您的特性分支:

$ hg update feature-branch 
$ hg commit --close-branch -m "Feature done, merging into default branch" 
$ hg update default 
$ hg merge feature-branch 
$ hg commit 

如果您還沒有做任何工作,在你啓動特性分支後的默認分支上,那麼這種合併將是微不足道的,並且沒有衝突。否則,你將不得不解決衝突。如果你一定要保持一切從功能分支,那麼你可以做

$ hg merge --noninteractive --tool internal:local feature-branch 
$ hg revert --all --rev feature-branch 

,而不是上面只是hg merge。這將確保default上的新提交看起來完全像feature-branch上的最後提交。

+0

添加書籤將無法正常工作:即使分支已關閉,「abort:書籤不能有現有分支的名稱」(hg 2.7 .2) – bartekbrak 2013-11-07 22:05:56

+0

@ user35186:感謝您的提醒。我想這個限制是在稍後添加的。幸運的是,後來又增加了另一種機制:Mercurial現在會自動在新克隆中籤出'@'書籤。 – 2013-11-09 09:48:06

1

我想做的只是你描述和尋找的東西,直到我找到一個答案,它使用revert命令來完成你所描述的。下面是我使用的代碼:

汞柱恢復--all --rev $ {1}

汞柱提交-m 「恢復分支$ {1}默認的」

,其中$ {1}是修訂號或分支名稱。這兩行實際上是bash腳本的一部分,但如果您想手動執行,它們可以自行工作。

如果您需要向發佈分支添加熱修復,但需要從默認生成(直到我們獲得我們的CI工具並且能夠從分支構建並隨後取消發佈分支),這非常有用。 。

相關問題