最近我從SVN切換到Mercurial。現在我想知道如何根據良好的實踐來實現Mercurial中我想要的分支工作流程,希望其他開發人員瞭解存儲庫中會發生什麼。在Mercurial中管理髮布分支
這是工作流程:
- 平時我有一個主幹/ default分支,其中對當前版本一系列的工作情況。假設這是1.x.同時,我使用分支2.x來開發下一個主要版本。這個分支的變化可能是激進的,所以與trunk/default/1.x分支合併在這裏沒有意義。
- 經過一段時間2.x的工作可能會完成,版本2.0獲得釋放。現在我希望2.x分支成爲新的默認/中繼分支,並且當前的默認/中繼是1.x分支。
- 重複這個過程,可能會出現一個新的3.x分支。和以前一樣,如果3.0被釋放,3.x應該成爲新的默認分支,而當時的默認值應該變成2.x分支(再次)。
我的問題是不這個工作流程是否是一個很好的(我想這不是根本上的錯誤)。我的問題是,我在Mercurial中意識到這一點的方式是否可以被視爲良好的做法,或者是否有更好的機會。
因此,這裏是我計劃在水銀來管理分行...
從一個分支庫保持當前版本的1.x系列的代碼開始:
$ hg init
$ echo "hello world" > file1.txt
$ hg ci -A -m "Initial commit of 1.x code"
開始在2.x版的工作:
$ hg branch 2.x
$ hg ci -m "Create new branch for 2.x development"
$ echo "Big new feature for 2.x" > file2.txt
$ hg ci -A -m "Add big new feature"
同時,做一些工作在當前版本系列(1.x中):
$ hg up default
$ echo "Minor adjustments specific for 1.x" > file3.txt
$ hg ci -A -m "Minor adjustments"
經過一段時間發佈2.0版準備就緒後,yippee!讓默認分支1.x的和2.X到默認:
$ hg up default
$ hg branch 1.x
$ hg ci -m "Make default branch to 1.x branch"
$ hg up 2.x
$ hg ci --close-branch -m "Close branch 2.x"
$ hg branch --force default
$ hg ci -m "Make former 2.x branch to new default"
現在創建一個新的分支3.X和它的工作,還對默認工作。同樣,一段時間後,3.0已經準備好,它的時間再次來管理分支名稱:
$ hg up default
$ hg branch --force 2.x # (reuse previously closed 2.x branch name)
$ hg ci -m "Make default branch to 2.x branch"
$ hg up 3.x
$ hg ci --close-branch -m "Close branch 3.x"
$ hg branch --force default
$ hg ci -m "Make former 3.x branch to new default"
現在的回購可能是這樣的(「O」是頭):
o Branch default (3.x)
|
| o Branch 2.x
\|
| o Branch 1.x
\|
|
.
要點我不確定如果重複使用分支名稱和與分支名稱雜耍默認是很好的做法。
很多關於該問題的文字 - 對不起 - 但我想清楚我在做什麼。
[Mercurial wiki](http://www.mercurial-scm.org/wiki/StandardBranching)對此主題進行了很好的介紹。 – xyres 2016-02-22 16:40:14