在决定克隆它之前,有没有办法查看GitHub上Git存储库的大小?
这似乎是一个非常明显/基本的统计数据,但是我根本找不到如何在GitHub上看到它。
在决定克隆它之前,有没有办法查看GitHub上Git存储库的大小?
这似乎是一个非常明显/基本的统计数据,但是我根本找不到如何在GitHub上看到它。
Answers:
有一种方法可以通过GitHub API访问此信息。
GET /repos/:user/:repo
检索有关存储库的信息时,将size
使用整个存储库(包括其所有历史记录)的大小(以千字节为单位)来评估名为属性的属性。
例如,Git存储库的权重约为124 MB。size
返回的JSON有效负载的属性值为124283
。
实际上,大小基于服务器端裸存储库的磁盘使用量以千字节为单位表示。但是,为了避免使用大型网络的存储库浪费太多空间,GitHub依赖于Git Alternates。在此配置中,针对裸存储库计算磁盘使用情况不会考虑共享对象存储,因此会通过API调用返回“不完整”值。
该信息已由GitHub支持提供。
$ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}
。参见developer.github.com/v3/#authentication
如果您拥有存储库,则可以通过打开“ 帐户设置” →“ 存储库”(https://github.com/settings/repositories)找到确切的大小,并且存储库大小显示在其名称旁边。
如果您不拥有该存储库,则可以对其进行派生,然后在同一位置进行检查。
有点hacky:使用该download as a zip file
选项,读取指示的文件大小,然后将其取消。
我不记得以zip格式进行下载是否可行,但是无论如何,现在这样做只能下载没有历史记录的当前选定分支。
Settings > Repositories
,但是在Account Settings > Repositories
git主页下找到了仓库的大小。当然,这仅适用于您拥有(或分叉)的存储库。
如果您使用Google Chrome浏览器,则可以安装GitHub Repository Size扩展。
@larowlan很棒的示例代码。使用新的GitHub API V3,需要更新curl语句。另外,不再需要登录:
curl https://api.github.com/repos/$2/$3 2> /dev/null | grep size | tr -dc '[:digit:]'
例如:
curl https://api.github.com/repos/dotnet/roslyn 2> /dev/null | grep size | tr -dc '[:digit:]'
返回931668
(以KB为单位),几乎是GB。
要使用curl(sudo apt-get curl)和json pretty(sudo gem install jsonpretty json)来做到这一点:
curl -u "YOURGITHUBUSERNAME" http://github.com/api/v2/json/repos/show/OWNER/REPOSITORY |
jsonpretty
用您的GitHub用户名替换YOURGITHUBUSERNAME(如图)。
用存储库所有者的Git用户名替换OWNER。用存储库名称替换REPOSITORY。
或作为一个不错的Bash脚本(将其粘贴到名为gitrepo-info的文件中):
#!/bin/bash
if [ $# -ne 3 ]
then
echo "Usage: gitrepo-info <username> <owner> <repo>"
exit 65
fi
curl -u "$1" http://github.com/api/v2/json/repos/show/$2/$3|jsonpretty
像这样使用它:
gitrepo-info larowlan pisi reel
这将为我提供有关GitHub 上的pisi / reel存储库的信息。
您需要遵循GitHub API。有关存储库的所有详细信息,请参见此处的文档。它要求您以以下方式发出GET请求:
GET / repos /:所有者/:存储库
您需要替换两件事:
例如,我的用户名maheshmnj,我拥有一个存储库flutter-ui-nice,因此我的GET URL为:
https://api.github.com/repos/maheshmnj/flutter-ui-nice
在发出GET请求时,您将充满一些JSON数据,并且可能在第78行上,您应该看到一个名为size的键,该键将返回存储库的大小。
提示:使用JSON时,建议您添加一个格式化JSON数据的插件,以使读取JSON变得容易。安装插件。
size
响应中的密钥,而不是第78行。更不用说,不同的格式化程序在不同的位置会有不同的换行符,从而将所需的数据保留在不同的行号上。
probably
在第78行看到它,因此这表明您应该在78左右的某个地方看到size键第二件事,如果github api的大小不准确,我认为您不会找到比github api更准确的东西。
总结@ larowlan,@ VMTrooper和@vahid chakoshy解决方案:
#!/usr/bin/env bash
if [ "$#" -eq 2 ]; then
echo "$(echo "scale=2; $(curl https://api.github.com/repos/$1/$2 2>/dev/null \
| grep size | head -1 | tr -dc '[:digit:]') / 1024" | bc)MB"
elif [ "$#" -eq 3 ] && [ "$1" == "-z" ]; then
# For some reason Content-Length header is returned only on second try
curl -I https://codeload.github.com/$2/$3/zip/master &>/dev/null
echo "$(echo "scale=2; $(curl -I https://codeload.github.com/$2/$3/zip/master \
2>/dev/null | grep Content-Length | cut -d' ' -f2 | tr -d '\r') / 1024 / 1024" \
| bc)MB"
else
printf "Usage: $(basename $0) [-z] OWNER REPO\n\n"
printf "Get github repository size or, optionally [-z], the size of the zipped\n"
printf "master branch (`Download ZIP` link on repo page).\n"
exit 1
fi
对于私有存储库,您需要从https://github.com/settings/tokens获得个人访问令牌。
然后使用以下curl命令获取详细信息(用[token],[owner]和[name]的值代替):
curl -u git:[token] https://api.github.com/repos/[owner]/[name] 2> /dev/null | grep size
如前所述,大小可能以MB或KB为单位。