我在Bitbucket和我的本地機器上有一個Mercurial repo,它們都是鏡像,是最新的。我創建了一個功能分支,反映在兩個回購協議中。我在功能分支中完成了所有工作。使另一個分支默認?
功能分支現在已完成,我現在要將其設置爲主repo和本地副本的默認值。我不關心默認分支,功能分支中已經有足夠的工作,我所要做的就是將它指定爲新的默認分支。
我不認爲我想合併也不應該?我該如何做到這一點,使本地和遠程都不會感到困惑?
我在Bitbucket和我的本地機器上有一個Mercurial repo,它們都是鏡像,是最新的。我創建了一個功能分支,反映在兩個回購協議中。我在功能分支中完成了所有工作。使另一個分支默認?
功能分支現在已完成,我現在要將其設置爲主repo和本地副本的默認值。我不關心默認分支,功能分支中已經有足夠的工作,我所要做的就是將它指定爲新的默認分支。
我不認爲我想合併也不應該?我該如何做到這一點,使本地和遠程都不會感到困惑?
剛剛合併feature-branch
爲default
然後關閉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
分支,留下兩個頭這是不理想的。
正在希望更多的東西像切換和重命名,但如果這是這樣的話!感謝您的快速響應.. – dartdog 2011-03-25 13:30:01
我succeded不通過關閉默認分支合併。
在我的開發庫的工作目錄:
$ hg update default
$ hg commit --close
那麼我的開發分支成爲新的默認分支。 但我不知道爲什麼我的開發分支被選爲 作爲新的默認規則。 我認爲這是因爲它是我的提示? (或者最後一次修改的分支?(提示?))
我也認爲你有下一次重複。 因爲我認爲我選擇的分支名稱被「默認」名稱「覆蓋」。
這將是不錯的分公司名稱。
DEV-項目名稱,version.x =默認
問候
另一個好方法... – dartdog 2011-06-04 15:28:18
真棒回答... – 2012-11-21 15:40:23
由於水銀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
上的最後提交。
添加書籤將無法正常工作:即使分支已關閉,「abort:書籤不能有現有分支的名稱」(hg 2.7 .2) – bartekbrak 2013-11-07 22:05:56
@ user35186:感謝您的提醒。我想這個限制是在稍後添加的。幸運的是,後來又增加了另一種機制:Mercurial現在會自動在新克隆中籤出'@'書籤。 – 2013-11-09 09:48:06
我想做的只是你描述和尋找的東西,直到我找到一個答案,它使用revert命令來完成你所描述的。下面是我使用的代碼:
汞柱恢復--all --rev $ {1}
汞柱提交-m 「恢復分支$ {1}默認的」
,其中$ {1}是修訂號或分支名稱。這兩行實際上是bash腳本的一部分,但如果您想手動執行,它們可以自行工作。
如果您需要向發佈分支添加熱修復,但需要從默認生成(直到我們獲得我們的CI工具並且能夠從分支構建並隨後取消發佈分支),這非常有用。 。
當我開始使用Mercurial時,我在處理分支名稱方面有類似的嘗試,但[已被建議做得更好](http://stackoverflow.com/questions/1405604/managing-release-branches-in-mercurial)。 – 2011-03-24 20:06:17