みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
ノンプログラマー向けにGitHubを組織で活用する方法をシリーズでお伝えしています。
前回の記事はこちら。
Organizationにリポジトリやユーザーを追加する方法をお伝えしました。
ところで、そのように追加したユーザーは、Organizationのリポジトリでの開発にどのように参加できるでしょうか。
そのためには「フォーク」というGitHubの素敵な機能を用います。
ということで、今回はGitHubで他のアカウントのリポジトリをコピーするフォークとその概要についてお伝えします。
では、行ってみましょう!
Organizationのリポジトリのユーザー権限について
Organizationのユーザーの基本的な権限
さて、Organizationへのユーザーは、Organization内のリポジトリについて、どのような操作を行うことができるのでしょうか?
つまり、どのような権限を持っているかということですね。
それを調べるために、Organizationページの「Settings」を開いてみましょう。
左側のメニューから「Member privileges」を選択すると、「Member repository permissons」という設定画面に入ります。
ちなみに「privilege」というのは特権、「repository permission」はリポジトリの許可という意味がありますね。
さて、ここで「Base permissions」というのが、Organization内のリポジトリに対するメンバーの基本的な権限を設定する部分です。
デフォルトでは「Read」になっていますね。
つまり、OrganizationのメンバーはOrganizationのリポジトリについて閲覧の権限があるということです。
逆に、以下のような書き込みを伴う操作は行うことができません。
- ブランチを作成する
- プッシュをする
- マージをする
メンバーがリポジトリの開発に参加するためには
Organizationに追加されたメンバーが、Organizationのリポジトリに参加したい場合、どうすればよいでしょうか?
ひとつの方法は、メンバーの基本的な権限「Base permissions」を「Write」にするという方法です。
これでもちろんすべてのOrganization内のリポジトリにプッシュをすることができるようになりますが、ただマージもできてしまいます。
ケースによっては、できる限りスキルや責任があるメンバーのみ、マージができるようにしたいということもありますよね?
もうひとつの方法として「フォーク」という方法を使う方法があります。
以下で詳しく紹介していきます。
フォークを使って開発に参加する
フォークとは
フォークとは、他のアカウント配下のリポジトリを、自分のアカウント配下にコピーをすることです。
フォークしたリポジトリは、自分のアカウント配下にコピーされたものですから、それに対しては、自由にブランチを作成したり、変更をプッシュしたりすることが可能です。
他人のコード…いじりたい放題です…!
そして、さらにフォークの素晴らしい点は、その変更したものを、元のリポジトリに対してプルリクエストをすることができる、ということです。
「プルリクエスト」とはについては、以下の記事もご覧くださいね。
それで、元のリポジトリのWrite権限があるいずれかのユーザーが、それをマージしてくれれば、元のリポジトリでその変更が採用されるということになります。
つまり、元のリポジトリに書き込み権限がない場合は、以下の手順で元のリポジトリの開発に参加可能です。
- 自分のリポジトリにフォークをする
- フォークをしたリポジトリに変更を加える
- プルリクエストをする
Organizationのプライベートリポジトリをフォーク可能にする
Organizationのリポジトリについて、閲覧しかできないメンバーが開発に参加したい場合も同様の方法で開発に参加できます。
Organizationのリポジトリをフォークをして、自分のアカウント配下で変更後、プルリクエストを行うのです。
しかし、Organizationの場合、パブリックリポジトリはそのままでフォークができますが、プライベートリポジトリについてはフォークができない設定になっています。
ですから、その設定を変更する必要がありますね。
Organizationのプライベートリポジトリをフォークできるようにするには、先ほどの「Member repository permissions」にある「Repository forking」の設定を変更します。
「Allow forking of private repositories」にチェックを入れましょう。
これで、Organizationのプライベートリポジトリもフォーク可能となります。
まとめ
以上、GitHubで他のアカウントのリポジトリをコピーするフォークとその概要についてお伝えしました。
次回、実際にフォークの機能を使ってプルリクエストを行ってみましょう。
どうぞお楽しみに!