Github的Repository分为三种类型,主要是用于决定谁可以访问、查看和克隆该仓库。GitHub 提供了几种不同的可见性选项,包括 Private
、Public
和 Internal。
- Private
- 只有仓库的拥有者和被明确邀请为协作者(Collaborator)的用户才能访问仓库
- Internal
- 这是 GitHub Enterprise Server 的一个特性,而不是标准的 GitHub.com。
- 仓库的内容仅对组织内的成员可见。
- Public
- 任何人都可以查看仓库的内容
在决定对Gihub的graphql进行扫描时,需要检测是否有Repo在扫描的范围之外,检测出可能遗漏的Repository,同时又需要排除一些私有的Repo。 于是,就通过graphql尝试获取graphql的属性。获取的EnterpriseRepositoryInfo的信息中包含有一个 isPrivate 属性。 这个属性具有一定的欺骗性,如果单看名字就可能认为它是Private的repo,但是,根据它的说明如下:
isPrivate代表这个Repo可能是Private也可能是internal。 也就是说这个属性不能用于决定某个repo是否是私有的。
于是,再进一步查询手册,发现有一个可以获取整个Repository
信息,有一个关于privacy的说明如下;
在这里可以了解到,一个repo是否是private不能通过privacy来判断,但是可以通过visibility来获取。
再进一步探索visibility的取值范围:
在这里可以看到Repo的三个可见性的属性:INTERNAL,PRIVATE和PUBLIC。通过,这个属性我们可以判断一个repo到底是不是Private。 这次应该是可以了。