開発者が変更をフェッチしてプッシュする中央の Git リポジトリがあります。デフォルトのマスター ブランチに変更を加えます。当社の継続的インテグレーション (CI) ツールは、このデフォルトのマスター ブランチからアーティファクトをビルドし、テストしたいものを「UAT」ブランチに昇格させる責任を負うエンティティです (これは実際には、ビルドマスターの人がプロモーションを行う CI ツールの Web ページ)。CI ツールは、コードを UAT から "Production" ブランチにプロモートする役割も担います。UAT ブランチと Production ブランチの目的は、UAT と Production にプロモートされたものを取得することです。UAT ブランチでは開発は行われず、開発/リリース イテレーションは非常に高速 (1 週間のイテレーション) であるため、プロダクションにはまれな「ホット フィックス」の形での「開発」のみが含まれます。
簡単にできるのであれば、誰かが誤って UAT ブランチと Production ブランチに直接開発変更を加えるのを防ぐためのコントロールを入れたいと考えています。1 つの考えは、中央サーバーにフックを設けて、CI ツール ユーザーだけが UAT と本番環境を変更できるようにすることです。また、マスター ブランチのみを含む開発者が使用する中央レポと、UAT および Production ブランチを含む 2 つ目のレポを用意できると考えました。CI ツールは両方のリポジトリと通信します。開発からリポジトリへの変更を確認し、2 番目のリポジトリを使用して UAT ブランチと Production ブランチへの昇格を行います。
これは人々が通常行うことですか (開発とプロモーションの目的で別々のリポジトリを使用しますか?)、サーバー フック アプローチよりも優れているでしょうか?