1

私は Mercurial でのリリース管理に関するさまざまな回答を調査してきましたが、正しい方法をほぼ見つけました。ただし、すべてが頭の中でうまくクリックされるようにするには、少し助けが必要です。

当社が必要としているものは次のとおりです:

1) 開発にバージョン管理スキーム {major.minor.patch} を

使用します 2) 名前付きブランチとタグをリリースの管理に使用します (たとえば、リポジトリのクローン作成とは対照的に)

3) リリース作業中3.0 では、古いメジャー リリースをサポートする必要があるかもしれません。たとえば、リリース 2.1 でバグが見つかった場合は、それを (リリース 2.1.1 で) 修正し、現在のリリース 3.0 にマージする必要があります。

さまざまなオプションと回答を調査した結果、Steve Losh からの次の優れた回答(以下のチェンジセット ツリーをコピーしたもの) がおそらく必要なものですが、2.1.1 で作業して 3.0 にマージする方法がわかりません。後者がすでにタグ付けされている場合のデフォルト?

$ hg glog -l 1000    
@       changeset:  25:efc0096f47c0  tip
|       summary:    Added tag 3.0 for changeset d1a7fc3d7d77
|
o       changeset:  24:d1a7fc3d7d77  3.0
|\      summary:    Merge in the redesign changes.
| |
| o     changeset:  23:b5b69d24c8f7 3.0-dev
| |     summary:    Finish 3.0 redesign.
| |
| o     changeset:  22:4c2f98fac54b 3.0-dev
|/|     summary:    Merge in the latest changes to 2.1/mainline.
| |
o |     changeset:  21:37df04521032
| |     summary:    Added tag 2.1 for changeset 39ecc520fc0a
| |
o |     changeset:  20:39ecc520fc0a  2.1
|\ \    summary:    2.1 development is done.
| | |
| o |   changeset:  19:208f3f9236af 2.1-dev
| | |   summary:    Finish the 2.1 work.
| | |
| | o   changeset:  18:4a024009a9d6 3.0-dev
| | |   summary:    More redesign work.
| | |
| | o   changeset:  17:00c416888c25 3.0-dev
| |/|   summary:    Merge in changes from the 2.1 branch to keep the redesign current.
| | |
| o |   changeset:  16:a57e781a0db1 2.1-dev
| | |   summary:    More 2.1 work.
| | |
| | o   changeset:  15:ddeb65402a61 3.0-dev
| | |   summary:    More redesign work.
| | |
+---o   changeset:  14:90f5d7a8af9a 3.0-dev
| | |   summary:    Merge in the fire fixes.
| | |
| o |   changeset:  13:78a949b67bb9 2.1-dev
|/| |   summary:    Merge in the fire fixes.
| | |
o | |   changeset:  12:6dfe9d856202
| | |   summary:    Oh no everything is on fire, fix it in the mainline.
| | |
| o |   changeset:  11:86767671dcdb 2.1-dev
| | |   summary:    Smaller changes for 2.1.
| | |
| | o   changeset:  10:25dec81d2546 3.0-dev
| | |   summary:    Work more on the redesign.
| | |
+---o   changeset:  9:42c7d689fb24 3.0-dev
| |     summary:    Start working on a complete redesign.
| |
| o     changeset:  8:3da99186ca7d 2.1-dev
|/      summary:    Start working on 2.1.
|
o       changeset:  7:9ba79361827d
|       summary:    Added tag 2.0 for changeset 755ed5c5e291
|
o       changeset:  6:755ed5c5e291  2.0
|\      summary:    Merge in the dev branch for 2.0.
| |
| o     changeset:  5:44a833fcc838 2.0-dev
| |     summary:    Finish work on 2.0.
| |
| o     changeset:  4:d7ba6aae1651 2.0-dev
|/|     summary:    Merge in the critical fix.
| |
o |     changeset:  3:968049f1b33a
| |     summary:    Fix a critical bug on the main branch.
| |
| o     changeset:  2:917869609b25 2.0-dev
| |     summary:    More work on the new version.
| |
| o     changeset:  1:f95798b9cb2e 2.0-dev
|/      summary:    Start working on version 2.0.
|
o       changeset:  0:8a3fb044d3f4
        summary:    Initial commit.

つまり、上記の変更セット ツリー/リリースでは、3.0 の作業を開始している間に 2.1.1 の修正に取り組むことは可能ですか? 3.0 が既にタグ付けされている場合、どうやって 2.1.1 をデフォルトにマージするのでしょうか? ここで何か不足していますか?そうでない場合、要件に従ってリリースを管理するためのより適切な方法はありますか? シナリオの変更セット ツリーの同様のスナップショットを提供していただければ幸いです。

よろしくお願いします。あなたたち最高。

4

2 に答える 2

1

複数のリリース バージョンを維持するという要件に基づいて、default開発用のブランチを使用し、メジャー バージョンごとにブランチを持つ別のブランチ戦略を検討します。これについては、このページで説明しています。また、大きな修正についてのセクションもあります。

上記の例に似た例を作成しました。

@    changeset:   13:3d6ac57cce61
|\   tag:         tip
| |  parent:      9:5953138c3f87
| |  parent:      12:9691c48d79f2
| |  user:        steve.kaye
| |  date:        Tue Jun 26 08:39:42 2012 +0100
| |  summary:     Merge bug fix
| |
| o  changeset:   12:9691c48d79f2
| |  branch:      V3
| |  user:        steve.kaye
| |  date:        Tue Jun 26 08:35:23 2012 +0100
| |  summary:     Added tag 3.1 for changeset e49d9a6bb459
| |
| o    changeset:   11:e49d9a6bb459
| |\   branch:      V3
| | |  tag:         3.1
| | |  parent:      7:5354c406c68a
| | |  parent:      8:00dfa7869e8c
| | |  user:        steve.kaye
| | |  date:        Tue Jun 26 08:35:20 2012 +0100
| | |  summary:     Merge bug fix
| | |
| | | o  changeset:   10:a84c532ce507
| | |/   branch:      V2
| | |    parent:      8:00dfa7869e8c
| | |    user:        steve.kaye
| | |    date:        Tue Jun 26 08:31:09 2012 +0100
| | |    summary:     Added tag 2.1 for changeset 00dfa7869e8c
| | |
o | |  changeset:   9:5953138c3f87
| | |  parent:      5:80b80eb9581b
| | |  user:        steve.kaye
| | |  date:        Tue Jun 26 08:30:41 2012 +0100
| | |  summary:     Start work on next version
| | |
| | o  changeset:   8:00dfa7869e8c
| | |  branch:      V2
| | |  tag:         2.1
| | |  parent:      4:6c4a68f3c073
| | |  user:        steve.kaye
| | |  date:        Tue Jun 26 08:29:56 2012 +0100
| | |  summary:     Fixed a bug in V2
| | |
| o |  changeset:   7:5354c406c68a
| | |  branch:      V3
| | |  user:        steve.kaye
| | |  date:        Tue Jun 26 08:24:52 2012 +0100
| | |  summary:     Added tag 3.0 for changeset 3f3a006aacdd
| | |
| o |  changeset:   6:3f3a006aacdd
|/ /   branch:      V3
| |    tag:         3.0
| |    user:        steve.kaye
| |    date:        Tue Jun 26 08:23:54 2012 +0100
| |    summary:     Version 3.0 ready for release
| |
o |  changeset:   5:80b80eb9581b
| |  parent:      2:21cf96f3ed91
| |  user:        steve.kaye
| |  date:        Tue Jun 26 08:22:47 2012 +0100
| |  summary:     Start work on next version
| |
| o  changeset:   4:6c4a68f3c073
| |  branch:      V2
| |  user:        steve.kaye
| |  date:        Tue Jun 26 08:20:07 2012 +0100
| |  summary:     Added tag 2.0 for changeset 666cc4453281
| |
| o  changeset:   3:666cc4453281
|/   branch:      V2
|    tag:         2.0
|    user:        steve.kaye
|    date:        Tue Jun 26 08:19:43 2012 +0100
|    summary:     Version 2.0 ready for release
|
o  changeset:   2:21cf96f3ed91
|  user:        steve.kaye
|  date:        Tue Jun 26 08:18:31 2012 +0100
|  summary:     More work on the new version
|
o  changeset:   1:6177b193da7c
|  user:        steve.kaye
|  date:        Tue Jun 26 08:18:06 2012 +0100
|  summary:     Start work on version 2.0
|
o  changeset:   0:51cc3c0590f9
   user:        steve.kaye
   date:        Tue Jun 26 08:17:27 2012 +0100
   summary:     Initial commit

ご覧のとおり、3 つのブランチがあります。 default新しい開発が行われた場所で、リリースの準備ができていると判断したので、V2ブランチを作成してタグを付けました2.0。その後、ブランチして としてタグ付けしdefaultたときにリリースの準備ができたと判断するまで、作業を続けました。その後、バグを発見し、それがバージョン 2 で導入されたことがわかったので、ブランチで修正してタグを付けました。次に、その修正を にマージしてタグを付け、 にマージして、開発コードで修正を取得しました。V33.0V22.1V33.1V3default

最も古いバージョンから開始すると、ブランチ間で修正を簡単に移植できます。これにより、その修正を新しいブランチに簡単にマージできます。最初に修正した場合、その修正をordefaultにマージすることはできません。これは、古いバージョンのすべての新機能とバグ修正を取得するためです。V2V3

他の分岐戦略と同じ数のヘッドがまだあることに注意してください。1defaultつは for でV2、もう 1 つは forV3ですが、複数のリリースを維持している場合は、よりきれいに配置されます。ソフトウェアのバージョン 2 の最新リリースを取得するにはhg up V2、最新バージョン 2 が何であるかを調べてからそれに更新する必要がある前に、実行する必要があります。

于 2012-06-26T07:53:01.223 に答える
0

リンクされた質問の 2 番目の段落には次のように書かれています。

2.0 の作業が完了したら、2.0-dev をデフォルトにマージし、結果に 2.0 のタグを付けます。

3.0このことから、リリースする準備が整うまでタグを付けないという考え方だと思います。リリースした場合、 の修正は には2.1.1入らず、ワークフローに問題はありません。3.03.0.1

また、タグを移動することもできるので、タグ付け3.0が早すぎることに気付いた場合は、-fフラグを使用して に移動できますhg tag

于 2012-06-22T09:53:53.893 に答える