GitHubのOrganization・Team・Repository・Project・Wikiの関係性(わかりにくい!)
こんにちは!GitHubなしでは生きてゆけないMizutani(@sirycity)です。Webエンジニアあるある。
今日はそんなGitHubのややこしいやつらの関係性についてです。こいつら↓
- Organization
- Team
- Repository
- Project
- Wiki
※一応しっかり調べてますが間違ってたらごめんね
Organization・Team・Repositoryは簡単!
この3つはわりと分かりやすいです。Organizationの中にたくさんteamがあって、その中にたくさんRepositoryがあります。
Organizationの中に直接あるRepository(Teamに入らないRepository)もあります。Organizationに入らないRepositoryもあります。ただしTeamは必ずOrganizationに入ります。
TeamがTeamに入ることもあります。んで、Teamの中のTeamの中にさらにTeamが入ることもあります。ただし、Organizationの中にOrganizationは入れません。Repositoryの中にRepositoryも無理です。言い方を変えるとTeamは親Team-子Teamみたいな概念があります。他2つにはありません。
なお複数のOrganizationに入ることもできます。Teamも複数入ることができます。複数のRepositoryは…もちろんOKです。Teamは親Teamに入ったら子Teamに自動的に入ります。が、Projectに入ってもTeamには勝手には入りません。
Projectはちょっと分かりにくい
Projectは指定した区分の中にあるRepositoryの諸々を管理できる機能です。
ProjectはOrganization・Team・Repository に対して作ることができます。例えば1つのOrganizationに対してたくさんのProjectを作れます。Organizationに作ったProjectでは、そのOrganizationの中にあるRepositoryのうち選択したもの全てを取り扱えます。
Teamも一緒です。1つのTeamに対してProject100個作ってもOK。Teamに作ったProjectでは、そのTeamの中にあるRepositoryのうち選択したもの全てを取り扱えます。
Repositoryも同じ。1個のRepositoryにProject1000個作っても大丈夫。Repositoryに作ったProjectで扱えるのはそのRepositoryだけ です。
ちなみに、Organizationの中に入ったTeamsの中に入ったRepository みたいな構成でも、それぞれ3つに対して別々にProjectを作ることができます。もちろんいくつでも。
んで、それらのProject間に何らかの関わりがあるわけではありません。親Project-子Projectみたいな概念はありません。
Project(Beta)について
なお、Projectは実は2種類あります。ProjectとProject(Beta)です。微妙に挙動が違います。Project(旧)はOrganizationもしくはTeamに作った場合に取り扱うRepositoryたちを選ぶ という作業があったのに対してProject(Beta)は選べるRepositoryは勝手に全部選んだ状態になります。とはいえ、別にそんなに違いはないです。
Wikiについて
Wikiもまあまあ分かりにくいです。
まず、WikiはRepositoryにしか作れません。OrganizationやTeamには作れません。なので会社のWikiとかチームのWikiとかは作れません。
Repositoryに対してはいくつでも作れます。ただし公開リポジトリにしか作れません。なので秘匿情報は載せれません。
さいごに
GitHub、複雑ですね。書いてて自分でもよく分からなくなってきました。表とかあると分かりやすいかも…
GitHubはエンジニアである以上ほぼ必須ツールではありますが複雑すぎるので、最初のうちはOrganizationとProject1つずつ、Repository複数くらいの構成から始めると良いかと思います。以上。