最近、私はSVNからMercurialに切り替えました。他の開発者がリポジトリで何が起こっているのかを理解するために、Mercurialで意図した分岐作業フローを実現する方法を知りました。Mercurialのリリースブランチの管理
これは、作業の流れです:
- 通常、私は現在のリリースシリーズの作業が発生したトランク/デフォルトの枝を持っています。それが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でこれを実現する方法が良い習慣と見なされるか、より良い機会があるかどうかということです。だからここ
は、私はMercurialの中に支店を管理する計画方法です...
現在のリリースシリーズ1.1のコードを保持している単一の分岐でリポジトリ最低料金:
$ 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.1)にいくつかの作業を行います。
$ hg up default
$ echo "Minor adjustments specific for 1.x" > file3.txt
$ hg ci -A -m "Minor adjustments"
いくつかの時間リリース2.0の準備が整い、yippee!
$ 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のと仕事を作成:1.1と2.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