[解決済み] 開発はブランチで続けるか、トランクで続けるか?[クローズド]
2022-04-23 14:58:46
質問内容
定期的にリリースが行われるソフトウェア製品を開発しているとします。ブランチとマージに関して、どのようなベストプラクティスがあるでしょうか?定期的に公開されるリリースブランチをスライスして、トランクで開発を続けるか、トランクを安定版とみなして定期的にリリースタグをつけ、実験的な作業はブランチで行うかです。トランクをゴールドと見なすか、サンドボックスと見なすか、皆さんはどうお考えでしょうか?
解決方法は?
私は、大規模な商用アプリケーションで両方の方法を試しました。
どちらの方法が良いかという答えは、あなたの正確な状況に大きく依存しますが、私のこれまでの全体的な経験で示されたことを書きます。
総合的にみてより良い方法(私の経験上)。トランクは常に安定していなければなりません。
この方法のガイドラインと利点は以下の通りです。
- 各タスク (または関連する一連のタスク) を独自のブランチでコーディングしておけば、いつこれらのタスクをマージしてリリースを実行するか、柔軟に決めることができます。
- QAは、トランクにマージする前に、各ブランチで行う必要があります。
- 個々のブランチでQAを行うことで、バグの原因を正確に把握することが容易になります。
- このソリューションは、開発者の人数に関係なく拡張できます。
- SVNでは分岐はほとんど瞬時に行われるため、この方法は有効です。
- 実行する各リリースにタグを付けます。
- しばらくリリースする予定のない機能を開発し、マージするタイミングを正確に判断することができます。
- すべての作業に対して、コードをコミットするメリットを得ることができます。 トランクからしか作業をしない場合、おそらくあなたのコードはコミットされないまま、つまり保護されず、自動的な履歴もないままになるでしょう。
もし、その逆で、すべての開発をトランクで行おうとすると、次のような問題が発生します。
- デイリービルドでビルドの問題が常に発生する
- ある開発者が問題をコミットすると、プロジェクトに参加している他のすべての人が問題を抱えることになり、生産性が低下する。
- 最終的に安定版を取得する必要があるため、リリースサイクルが長くなる
- 安定したリリースの少なさ
ブランチを安定させ、トランクを開発のサンドボックスとして維持しようとすると、必要な柔軟性が得られないでしょう。 なぜなら、安定版リリースに何を入れたいかをトランクから選ぶことができないからです。 それはすでにトランクの中に全部混ざってしまっているからです。
特に、すべての開発をトランクで行うべきと言えるケースは、新しいプロジェクトを始めるときです。 それ以外にも、状況に応じてさまざまなケースが考えられます。
ところで、分散型バージョン管理システムはより柔軟性があり、私はhgかgitのどちらかに切り替えることを強くお勧めします。
関連
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] Git のコミットで変更点を確認するには?
-
[解決済み] Git で master の変更をブランチに取り込む
-
[解決済み】Gitで複数のコミットの著者名やコミッター名、Eメールを変更する方法は?
-
[解決済み】ソースコントロールに変更をコミットする頻度を教えてください。[クローズド]
-
[解決済み】ローカルのGitブランチの名前を変更するには?
-
[解決済み】Mercurial - 古いバージョンに戻してそこから継続する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] hg forgetとhg removeの違いは何ですか?
-
[解決済み] DreamWeaver の _notes フォルダと dwsync.xml ファイルは、ソースコントロールによって安全に無視できますか?
-
[解決済み] Mercurialで不正なコミットメッセージを編集するには?重複
-
[解決済み】3ウェイマージの方が2ウェイマージより有利なのはなぜですか?
-
[解決済み】Mercurial - 古いバージョンに戻してそこから継続する
-
[解決済み] TFSソースコントロールで複数のファイルを移動する
-
[解決済み] 開発はブランチで続けるか、トランクで続けるか?[クローズド]
-
[解決済み] Mercurialでフォルダ以下をすべて無視するにはどうしたらいいですか?
-
[解決済み] IntelliJ IDEA 9/10、ソースコントロールにチェックインする(しない)フォルダは何ですか?
-
[解決済み] git add . vs git commit -a