web-dev-qa-db-ja.com

githubで「マスター」を保護する方法は?

私のgithubプロジェクトにはいくつかの貢献者がいます。そのうちの1つだけが「プッシュ」してマスターできるようにします。そして、この男は私(リポジトリの所有者)ではありません。することは可能ですか?

46
yegor256

当時、この質問が投稿されたとき、GitHubはブランチレベルでアクセス権限を指定することを許可していませんでした。リポジトリレベルでのみ実行できます。したがって、あなたが要求していることは不可能でした。

この制限を回避したい場合、個人的に2つのオプションがあります。

  • 何らかのコミットフックなどを使用して、少なくとも誰かに何か問題が発生したことを知らせることができます。
  • この厳密な制御が本当に必要な場合は、2つのリポジトリを使用できます。1つは「マスター」ブランチのみを保持します。次に、「男」のみがマスターリポジトリへの書き込みアクセス権を取得することを確認する必要があります。

いくつかの組織でそれを解決する方が簡単だと思います。私のチームでは、マスターに直接プッシュするものではなく、常にプルリクエストを作成します。これにより、少なくとも誰かがコードをマージする前に確認することができます。また、プルリクエストのマージを「男」のみに許可するポリシーを定義することもできます。

更新

GitHubが発表されました 保護されたブランチと呼ばれる新しい機能を展開します。この機能は、Atlassian Stashのような他のgitディストリビューションに何年も存在していました。これにより、一部のブランチをプッシュから保護できます。ただし、個々のブランチを完全にACLベースで保護することはできません。したがって、上記のアウトラインのような組織的なソリューションに依存したくない場合は、この機能をチェックアウトすることをお勧めします。

34
Sebi

注: 保護されたブランチと必要なステータスチェック (2015年9月3日)により、ブランチを保護できます

  • 強制プッシュに対して
  • 削除に対して
  • 必要なステータスチェックに合格するまで、マージされた変更に対して

https://cloud.githubusercontent.com/assets/25792/9596474/27db3ce6-502a-11e5-9b19-5b47a8addc65.png


2016年3月以降、 コメント付き 以下 Sander により、ユーザーとチームの制限

保護されたブランチへのマージは、リリースマネージャーまたはその特定のブランチの安定性を担当するチームに任せるのが最善の場合があります。組織は、保護されたブランチにプッシュできるメンバーとチームを指定できるようになりました。

https://cloud.githubusercontent.com/assets/4719/14140705/ed98abac-f67a-11e5-951e-b48c842fb77f.png

9
VonC

これがまさにフォーキングの目的です。メインリポジトリを保護し、すべての貢献者に対してそのリポジトリの読み取り権限を許可します。これらの貢献者はレポをフォークし、メインレポの個人用コピーに変更をプッシュします。メインリポジトリにコードを導入する準備ができたら、メインリポジトリにプルリクエストを送信します。この場合、メインプロジェクトの所有者はプルリクエストを完了できます。

3
kbuilds

「CODEOWNERS」ファイルを使用して、プルリクエストを有効にするためにコード所有者によるレビューを要求できるようになりました。 GitHubアカウントに基づいて異なるアクセス許可を設定できます。

here および here を参照

0
Malick