web-dev-qa-db-ja.com

Visual Studio Team ServicesでGitブランチを保護する

開発者が「マスター」ブランチにマージすることを明示的に許可したいだけです。セキュリティ設定の場所を見つけましたが、「そのブランチ、Robのマージのみを許可する」と言うことができないようです。具体的なガイダンスはありますか?

35
Rob Ellis

TFSはエンタープライズGit機能を提供するため、VSTSのMASTERを非常に簡単に保護できます。これを実現するには2つの方法があります。

1)Gitブランチのアクセス許可

[バージョン管理]タブの管理ページで、公開された各ブランチの権限を変更できます。リポジトリレベルでアクセスを維持する必要がありますが、MASTERでは、「Contributor」コミット許可を「not configured」に変更できます。その後、Robのみを追加できます...

VSTS Git Branch permissions

ああ...拒否は常にオーバーライドするため、「拒否」ではなく「設定なし」を常に使用します。

2)Gitブランチポリシー

VSTSは、ブランチポリシーの概念を導入しています。これらのブランチポリシーはどのブランチにも適用できますが、従来はMASTERに適用されていました。

VSTS Git Branch Policies

ここでは、ニーズを反映するために複数のポリシーを適用できます...私は常に設定します

これを実現するには、もう少し手順を踏まなければならないことがわかりました

オンラインのVisual Studioでグループを定義するには、コレクションレベルとプロジェクトレベルの2つの場所があります。

コレクションレベルで、管理者グループを作成し、開発者グループを作成しました。私は、管理グループのメンバーに、リポジトリ内のmasterブランチへの書き込みアクセス権のみが必要でした。

プロジェクトレベルでは、開発者と管理者グループをプロジェクトチームに追加しました。プロジェクト投稿者グループでは、プロジェクトチームを削除し、開発者グループのみを追加しました

プロジェクト管理者グループに、コレクションレベルの管理者グループを追加しました。

次に、マスターブランチのバージョン管理タブで、貢献者グループにcontribute = denyを設定します

管理者は投稿者グループのメンバーではないため、拒否許可は適用されず、直接またはプルリクエストの承認を通じて変更をマスターにプッシュできます。

9
Anthony Brown

@anthonybrownに基づいて(2)タイプのグループを作成しました。ただし、ユーザーがmasterブランチ(または選択した他のブランチ)を削除、プッシュ、および貢献することを制限する機能を解決する説明をさらに支援するために、スクリーンショットを提供したかったのですグローバルレベルではなく、リポジトリレベルベースで。

VSTSに基づいて、「グローバル」チームにユーザーが既に追加されていることに注意してください。これらのユーザーは削除しませんでしたが、代わりに(2)別のグループに追加しました。

  • 開発者
  • 管理者

1)ベースVSTS画面に移動します(これはデフォルトで/_projectsのURL。

enter image description here

2)コグをクリックして、「セキュリティ」を選択します

enter image description here

3)一番左の「グループの作成」を選択し、「開発者」という名前を付けます。グループが作成されたら、グループを選択し、中央のセクションで「メンバー」を選択します。 しないでください、このグループの「マスター」ブランチへの貢献権を持ちたいすべてのユーザーを追加します。 (注-このステップの前に、ユーザーをVSTSに追加しておく必要があります)。

enter image description here

4)「Administrators」グループを作成し、アクセスを許可するDO WANTするユーザーを追加します。 (注-「管理者」グループのユーザーがグローバルレベルまたはプロジェクトレベルでVSTSに既に追加されている場合は、この手順をスキップできます。私はそれをしました)。

5)VSTSホームページ(/ _projects)に戻り、マスターブランチへのアクセスを制限するリポジトリを選択します。 「バージョン管理」を選択します。左側で、「マスター」ブランチを選択します。中央のセクションで、「セキュリティ」を選択します。 「Developers」グループを追加します。「Developers」グループを選択し(追加後)、「Deny」へのアクセスを設定します:

  • 貢献(これはプッシュされます
  • ポリシーを編集する
  • 強制プッシュ
  • 権限を管理する

enter image description here

2
Rob Scott

私は通常、「Devs」のような特別なVSOグループを作成し、そこに開発者を配置します。次に、このグループをプロジェクトコントリビューターのメンバーグループとして使用し、保護するブランチで具体的に「Devs」グループを使用してContributeをDenyに設定します。したがって、「Devs」グループのメンバーのみがコントリビューションを拒否されます、しかし、例えばプロジェクト管理者は引き続きプッシュできます。

ContributorsグループでContributeを直接Denyに設定すると、Denyの方がAllowよりも強力であるため、Contributeで管理者も、具体的にAllowを設定したとしても、誰もブランチにプッシュできません。元のグループ。

0
Santhos