バージョン管理ソフトウェアで現在の開発とメンテナンス開発を分離するために推奨される方法は何ですか?


10

Gitを使用して管理されているソフトウェアアプリケーションがあります。私は新しいバージョン2.xをリリースしました。これは長期的に維持する予定です(ほとんどのバグ修正)。それまでの間、バージョン3.xの作業を開始したいと思います。これを管理するための推奨される方法は何ですか?バージョン2.xのブランチを作成し、マスターで3.x開発を行う必要がありますか?または逆ですか?


開発用と安定用に別のブランチを用意します。
2011

では、通常は何がmasterブランチに入りますか?(これまで私はいつもそこですべてを行っています)
laurent

あなたが何masterを意味したいのかを決める必要があります。単なるラベルです。
2011

回答:


13

ここで、非常に興味深い方法について説明しました。Gitブランチモデルの成功

とても興味深かったのですが、まだ実際に使っていません。

非常によく、記事が言っていることの(非常に)短い要約を要求したように:

  • マスターブランチはすべて、完成したマイルストーン(バージョン1.0、1.1、1.2など)のみを表します
  • 開発はそれ自身のブランチで行われます(誰が考えたでしょうか?機能の完全なバージョンが完了すると、開発ブランチはマスターブランチにマージされます。
  • 開発からの分岐は機能分岐です。これらは、次の(または将来の)リリースの単一の機能を表しています。それらは、developブランチにマージされます。
  • 開発に由来する別のブランチは、「リリース」ブランチです。これは、ほぼ完全なリリースバージョンを表すブランチで、細かい部分だけをクリーンアップする必要があります。開発ブランチとマージし、最終的にはマスターブランチとマージします。
  • "Hotfix"ブランチは、リリースの1つに重大なバグが見つかった場合にマスターブランチからブランチします(つまり、「使用によりコナミコードが入力された場合、プログラムはメインハードドライブを再フォーマットします...」)。バギーリリースから分岐し、修正が完了すると、マスターブランチと開発ブランチにマージされます。

それはそれでは不十分ですが、信頼できる記事です。この記事ではそれをより詳細に説明し、わかりやすい視覚化グラフィックを使用すると、はるかに理解しやすくなります。


2
回答には提案についての説明を含める必要があります。できれば、モデルの全体的なアイデアを得るためにリンクをたどる必要はありません。リンクは失敗するという悪い癖があり、答えはそれ自体で
成り立た

+1私たちが仕事で使用するもののほとんどは、本当に機能します。
エドジェームス

1
これは一般に「安定したトランク」または「機能ブランチ」モデルと呼ばれていると思います。
sleske 2011

「マスターブランチはすべて、完成したマイルストーン(つまり、バージョン1.0、1.1、1.2など)のみを表します」バージョン1.0、1.1、1.2、2.0、1.3、2.1、1.4、2.2、3.0、1.5のマスターブランチは必要ありません。その順序、それは本当に混乱するでしょう。私の推測では、リリースが行われるストリームは最大で1つであるという暗黙の仮定があると思いますが、それは私の実践ではそうではありません。アーリーアダプターや、より安定したものを求めている人々がいます。
AProgrammer

まあ、長い目で見れば、ブランチはラベルにすぎず、そこで何が起こっているかを簡単に知ることができます。したがって、この方法が気に入らない場合でも、Masterブランチを使用するのは、市長の安定リリースのみで、「増分」ブランチ(またはそれを呼び出したいもの)を小規模な増分リリースで使用できることです。
Sorcy

5

私の原則は、ブランチが短期間であるほど、ブランチ構造のより深いところにあり、その名前がより具体的になるということです。ブランチの期間が長くなるほど、ブランチ構造内の浅くなり、その名前はより一般的になります。

したがって、マスターを長期(3.X)バージョンの間保持し、このブランチに特定の名前(リリースコード名またはさらに悪いリリース番号)ではなく、一般的な名前(マスター、トランク、開発など)で名前を付け続ける後のマーケティング決定に実際に依存しすぎている)

ブランチのフラットな名前空間があり、ブランチが同等であるgitのようなシステムではそれほど重要ではありません。ブランチの階層的な名前空間を持つclearcaseのようなシステムの方が重要です(V4ブランチの完全な名前は、最終的にmain / v1 / v2 / v3 / v4 ...になります)。


+1このコンテキストでの深い意味と浅い意味がわからない場合を除いて、おそらくこれらの用語を少し拡張できますか?
Michael Durrant 2015

枝が木を作っていると思います。彼らは幹や別の枝から出てくるかもしれません。浅いとは、枝と幹との間の分岐段数が少ないことを意味し、深いとは、分岐段数が重要であることを意味する。小さくて重要なのはほとんどが相対的なものですが、新しいリリースがそれぞれ、トランクからの以前のリリースよりも1ステップずつ進んだスキームを見てきました。フラットな名前空間を使用している場合は、それほど悪くはありません。名前空間が階層的である場合(クリアケース、CVS、RCS、Perforceも同様に使用できます)、ますます長い名前になります。
AProgrammer 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.