使用 API 中的属性“size”将无济于事,正如此处其他海报所提到的那样。
一个例子是这个存储库:
https ://api.github.com/repos/errfree/test
如果您注意到,它会显示大小为 48,尽管它是空的。
免责声明:这种方法是一种黑客行为。它效率不高,也没有得到 GitHub 的官方支持,但对我来说已经足够好了。
基本上,我下载了存储库的 Zip 版本。当存储库为空时,它不会返回 zip 文件,但会提供一个 HTML 页面,显示“此存储库为空。”。
下载 zip 文件后,我验证大小是否小于 30Kb,如果是这种情况,我在文件内容中查找字符串“This repository is empty”。确认给定的存储库是空的。
这是一个直接 zip 下载的实际示例,在这种情况下将显示一个空白页面:
https ://github.com/errfree/test/zipball/master/
我在 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;
}
}
希望这可以帮助。