そうですね。でも、あなたはそこに行きたいとは思わない。
Jason が言うように、特定の動作を防ぐために使用できるフックがあります。この場合、pre commit フックを使用して、誰も「git commit」を実行できないようにすることができます。しかし、これにはいくつかの点で問題があります。
- さまざまなセキュリティ上の理由から、git フックはリポジトリと一緒に配布されていないため、リポジトリでフックを使用することを人々に強制することはできません。彼らのリポジトリは彼ら自身のものであり、彼らが彼らのリポジトリで何をするかをあなたが決めることではないことを覚えておいてください.
- プルまたはマージを実行して競合が発生するとどうなりますか? これらの競合を解決するには、「git commit」を使用できる必要がありますが、これは現在無効になっています。
これは、解決するよりも多くの問題を生み出すだけです。
ただし、これは他の方法で解決できます。これらの原則を適用するワークフローを作成できます。たとえば、テスト ブランチからリリース ブランチへのマージを担当する人物 A がいるとします。この人だけが変更を中央リポジトリにプッシュできるようにした場合 (またはその人のリポジトリが「中央」リポジトリである場合)、彼/彼女はテスト リポジトリのテスト ブランチまたはのテスト ブランチから変更をプルできます。テスター B (想像力を働かせてください)。
ここで重要なのは、変更を相互に伝達する方法を設計することで、ポリシーを強制できることを理解することです。誰もが変更を1 つのリポジトリにプッシュできる必要はありません。まったく、変更をプッシュする必要さえありません。テストの人/人は、開発者が何かをテストする必要があるとすぐに、開発者から変更を取り込むことができます。このようにして、新しい変更を取り込む準備ができたときにテストに決定させることができます。もの。同じ原理。