質問: 質問 -- Azure DevOpsのブランチポリシーの設定で、以下の2点を満たすにはどのように設定すれば良いでしょうか? - 特定のブランチには直接プッシュできない - PRの作成は可能 要するに、特定のブランチ(upstream/masterなど)を変更するには必ずPRを介するようにしたいです。 やったこと ----- 上記の要求を満たしたいリポジトリのブランチポリシーにあるContributeをDenyにして、Bypass policies when completing pull requestsをAllowにする。 →プッシュの禁止はできましたがfork/master->upstream/masterのPRの作成もできなくなりました 参考情報 ---- Azure DevOpsのドキュメント StackOverflowの質問 VSTS - prevent push to master but allow PR merge
回答: 自己解決しました 「Repos」->「Branches」でpushを禁止したいブランチの「Branch policies ※1」を選択して 「Require a minimum number of reviewers」の人数を1人以上にして、自分が出したPRを承認できるように「Allow requestors to approve their own changes」にチェックを入れました こうすることで期待の動作になることを確認しました また今回は試しておりませんが、kkamegawa様が提案されたブランチのロックと組み合わせることで、履歴の変更も含めて、より強固にブランチを保護できると考えております *Locking is ideal for preventing new changes that might conflict with an important merge or to place a branch into a read-only state. Use branch policies and pull requests with locking if you want to ensure that changes in a branch are reviewed before they are merged and prevent changes in the locked branch.* Lock a branch の 「Locking limitations」より ※1 各ブランチの右端にカーソルを合わせた時に出てくる、縦方向三点リーダーをクリックしてポップアップを表示する必要がある