计算GitHub上的空存储库数

计算GitHub上的空存储库数,github,Github,我只是想知道是否可以计算GitHub上的空存储库总数 如果不是针对所有用户,那么可以为您自己完成吗 编辑 我尝试过搜索,但它似乎返回了许多确实包含数据的存储库。采取类似于size:0..1的措施也没有帮助 如果我尝试搜索关键字empty,但它没有涵盖所有方面 更新 我收到了Brian Levine(GitHub)的回复 这将是一个有趣的统计数字。我们现在没有一个简单的方法来做到这一点。但是,您可能可以使用GithubAPI来接近它。您可以查看公共存储库并比较“push_at”和“created_

我只是想知道是否可以计算GitHub上的空存储库总数

如果不是针对所有用户,那么可以为您自己完成吗

编辑 我尝试过搜索,但它似乎返回了许多确实包含数据的存储库。采取类似于
size:0..1
的措施也没有帮助

如果我尝试搜索关键字
empty
,但它没有涵盖所有方面

更新 我收到了Brian Levine(GitHub)的回复

这将是一个有趣的统计数字。我们现在没有一个简单的方法来做到这一点。但是,您可能可以使用GithubAPI来接近它。您可以查看公共存储库并比较“push_at”和“created_at”日期,以查看是否有任何活动。此外,您还可以找到“大小”为0的存储库。有关如何查找此信息的更多信息,以及更多信息,请参见:

你可以:

  • 通过API列出,以及
  • 对于每次回购,检查大小等于0的回购。
    (修订)

请注意,当使用默认的
README.md
description文件创建时,“空”回购仍可能至少有一次提交。
实际上,由于:

我将空的含义解释为:0-1次提交,最多3个文件

(注:)

另一种方式是,对于每次回购,都要 0或1提交可能意味着一个空的回购


更新:GitHub确认目前没有办法确定回购是否为“空”。
最接近的方法是:

您可以查看公共存储库,比较“push_at”和“created_at”日期,看看是否有任何活动


要检查存储库是否为空,请查看它是否有任何提交

空存储库将具有不成功的HTTP状态,并且内容

{
  "message": "Git Repository is empty.",
  "documentation_url": "https://developer.github.com/v3"
}
如果它不存在,你会得到一个404和

{
  "message": "Not Found",
  "documentation_url": "https://developer.github.com/v3"
}
如果它确实存在,您将得到一个HTTP 200和一个提交。

使用API中的属性“size”不会有帮助,正如其他海报所提到的那样

例如,此存储库:

如果您注意到,尽管为空,它仍显示为48

免责声明:这种方法是一种黑客行为。它既没有效率,也没有GitHub的官方支持,但对我来说已经足够好了

基本上,我下载了存储库的Zip版本。当存储库为空时,它不会返回zip文件,但会提供一个HTML页面,显示“此存储库为空”

下载zip文件后,我验证大小是否小于30Kb,如果是这种情况,我会查看文件内容中的字符串“this repository is empty.”,以确认给定的存储库是空的

下面是一个直接zip下载的实际示例,在这种情况下,将显示一个空页面:

我的Java伪代码:

        // we might have reached an empty repository
        if(fileZip.length() < 30000){
            // read the contents
            final String content = utils.files.readAsString(fileZip);
            // is this an HTML file with the repository empty message?
            if(content.contains("This repository is empty.")){
                return null;
            }
        }
//我们可能到达了一个空存储库
如果(fileZip.length()<30000){
//阅读内容
最终字符串内容=utils.files.readAsString(fileZip);
//这是一个包含存储库空消息的HTML文件吗?
if(content.contains(“此存储库为空”){
返回null;
}
}

希望这有帮助。

你说的“空”是什么意思?没有文件和提交的存储库?我从未在GitHub上见过这样的存储库@罗宾格林:是的!没有文件的回购协议。那是很有可能的。很多人创建回购协议,但从不推送代码。我尝试过这个,但0kb回购协议也有一些数据。这意味着GitHub不会回复到0kb查询。@Aniket是的,正如我在编辑的答案中提到的。我怀疑需要进行排序,以便您检测可能是“空”回购的“小”回购。
commit:0..1
逻辑似乎有道理,但GitHub不接受这样的参数。@Aniket是的,我同意,API只反映过去n天的提交,因此它甚至对所有回购都无效。我仍然会按规模对回购协议进行分类。如果可能的话,我想我应该就此与GitHub联系。
{
  "message": "Not Found",
  "documentation_url": "https://developer.github.com/v3"
}
        // we might have reached an empty repository
        if(fileZip.length() < 30000){
            // read the contents
            final String content = utils.files.readAsString(fileZip);
            // is this an HTML file with the repository empty message?
            if(content.contains("This repository is empty.")){
                return null;
            }
        }