5

過去

Subversion を scm として使用してソフトウェア プロジェクトを開発しています。これまで開発は常に で行われてtrunkいたため、バグ修正リリースが必要になると問題が発生しました。ここで、分岐戦略を再考したいと考えています。要件は次のとおりです。一度に複数の将来のリリースに取り組めるようにしたいのです。

タスク

つまり、現在取り組んでいるバージョンが 1.0 であるとします。次に予定されているバージョンは 2.0、その次のバージョンは 3.0 です。1.0 をリリースしたので、

  • バージョン 1.0 を維持する
  • 2.0 の機能を開発する
  • 同時に 3.0 の機能を開発する

もちろん、1.0 で適用された修正は、他の 2 つのバージョンでも必要です。さらに、2.0 の機能も 3.0 に含める必要があります。また、マイナー リリースが計画されている可能性もあります。たとえば、1.1 には新機能も含まれており、個別に維持する必要があります。

可能な解決策

次の分岐戦略を思いつきました。

  • トランクは捨てます
  • 新しく計画されたリリースごとに、最後のリリース ブランチに由来するブランチが作成されます。
  • 変更は、バージョン タイムラインで「上方」に反映されます

これをもう少し詳しく説明しましょう。この例では、トランクからバージョン 1.0 を分岐します。また、バージョン 1.0 からバージョン 2.0 を分岐し、バージョン 2.0 からバージョン 3.0 を分岐します。1.0 で変更が行われると、2.0 にマージされ、その後 3.0 にマージされます。

説明されている分岐戦略の視覚化 (下手な塗装品質を許してください)

質問

これは有効な方法論ですか?技術的にうまくいくでしょうか?組織の落とし穴はありますか?ベストプラクティスはありますか? (インターネットで思いつくのは、「トランクで開発し、リリースブランチで維持する」だけです)。トランクを放棄するのは特に奇妙に思えます-それは間違っていますか?

4

1 に答える 1

2

「で開発する」という考えは、チェックアウトできるデフォルトのブランチでtrunkあるという事実から来ています。 つまり、他のブランチの命名規則はわかりませんが、少なくとも「メイン」ブランチが「」と呼ばれていることは知っているので、新しい開発者として、そのブランチをチェックアウトしたくなるかもしれません。現在の開発は、その同じブランチで行うのが最適です。trunk
trunk

これらのリリースが完了したら、ブランチ1.01.1またはむしろメンテナンス操作用になります。2.0

並行開発の場合は、 (現在の開発を表す)から作成された、 など1.1_dev、別の命名規則をお勧めします。 これらのブランチの存続期間が長すぎず、ブランチから分岐しすぎていなければ (マージがますます複雑になるため)、これはうまくいく可能性があります。2.0_devtrunk1.0
trunk

于 2011-03-03T15:39:36.397 に答える