web-dev-qa-db-ja.com

GIT:本番環境を反映するためにマスター(または任意のブランチ)を使用する理由

サーバー開発チームでここで議論があり、苦労しています。私は常にマスタをプロダクションのソースとして使用し、masterブランチ(または指定されたリリースブランチ)が長時間実行リリースブランチとして機能します。プロセスにGitFlowを使用し、マスターからリリースし、リリースにタグを付けることに賛成ですが、今のところ、私が持っているのは、本能と過去の経験だけです。

私は特に「このプロセスはそのプロセスよりも優れている」と言ってくれる人を探しているのではなく、代わりにwhy長期実行ブランチ(マスターなど)とタグ付きリリースに関する証拠を提供します良い(または悪い)ものです。短期間のリリースブランチにタグが付いている短期間のリリースブランチよりも良いまたは悪いという具体的な証拠はありますか?

編集:開発プロセスに関する情報が要求されました:現在、私たちは現在流動的な状態にあります。 SVNからGITに移行したばかりで、モノリスをマイクロサービス(または少なくとも分解されたモノリス)に分解しています。基本的に、私たちは複数のデプロイメント環境をサポートし、それぞれのクローンは統合環境として機能し、開発環境は統合環境から独立しています。開発チームは、ローカル環境での作業を検証し、それをテストのために統合にプッシュし、サービスはそこから本番環境にデプロイされます。現在、モノリスには500を超えるサービスがあり、最終的には300以上の個別のマイクロサービスになる可能性があります。依存関係のあるプロジェクトと相まって、すべてが完了すると、最終的には約600以上の個別のgitプロジェクトができます。

1
Robert K

本番環境のコードの正規ソースとしてマスターブランチを使用すると、開発者がリポジトリのクローンを作成し、すぐに本番環境のコードを配置できます。それは次のように簡単です:

git clone your-repo

別のブランチが製品コードに使用されている場合でも、マスターブランチはsomethingを表す必要があります。それ以外の場合は混乱を招きます。

私は、開発ブランチ(文字通り「開発」と呼ばれる)があるプロジェクトに取り組み、そこからリリースブランチを作成しました。マスターブランチは、人々が更新するのを忘れたこの奇妙な無人のコードの国になりました。私は常にdevelopmentブランチまたはリリースブランチをチェックアウトする必要があることを、経験豊富なチームメンバーを含めて人々に思い出させていたため、これは面倒でした。

リポジトリのクローンを作成して本番コードを確認するのが簡単になることが、基本的に唯一の理由です。それ以外の場合は、「マスター」が実際に使用されたことのない無人の土地状況を回避する限り、「マスター」が何を表すかを決定し、それに固執します。

4
Greg Burghardt

さて、他にどのように製品の内容を知っていますか?ライブコピーと再帰的な差分をダウンロードしますか?推測?等。?

言い換えると、有用な比較ポイントと、何が生きているかについての有用な仮定を提供します(ただし、この仮定を定期的に確認することは有用ですが、git fetch +いくつかの配管は簡単に表示できます)。

3
D. Ben Knoble