如何在克隆之前查看GitHub存储库的大小?

在我们决定是否要克隆GitHub存储库之前,有没有办法在GitHub上查看Git存储库的大小呢?

这似乎是一个非常明显/基本的统计数据,但我找不到在GitHub上如何查看它的方法。

解决方案

可以通过GitHub API访问此信息。

在检索关于存储库的信息时,返回的JSON中的一个属性名为“size”,以千字节为单位表示整个存储库(包括其全部历史记录)的大小。

例如,Git存储库大小约为124MB。返回的JSON中的“size”属性的值为124283。

注:确实是以千字节的方式表示大小,基于服务器端裸存储库的磁盘使用情况。但是,为了避免在具有大网络的存储库中浪费太多空间,GitHub依赖于Git替代品(Git alternates)。在这种配置中,根据裸存储库计算磁盘使用量不会计算共享对象存储,从而通过API调用返回了一个“不完整”的值。这是GitHub支持提供的信息。

参考代码

想要查看示例代码,请点击下方链接:

参考代码:

bash

1curl -u "YOURGITHUBUSERNAME" https://api.github.com/repos/OWNER/REPOSITORY 2>/dev/null | grep size | tr -dc '[:digit:]'

将YOURGITHUBUSERNAME替换为您的GitHub用户名。 将OWNER替换为存储库所有者的Git用户名。 将REPOSITORY替换为存储库名称。

例如:

1curl -u "YOURGITHUBUSERNAME" https://api.github.com/repos/git/git 2>/dev/null | grep size | tr -dc '[:digit:]'

返回值为931668(以KB为单位),约等于1GB。

私有存储库需要进行身份验证。一种方法是使用GitHub个人访问令牌:

1curl -u "YOURGITHUBUSERNAME:$PERSONAL_ACCESS_TOKEN" https://api.github.com/repos/OWNER/REPOSITORY 2>/dev/null | grep size | tr -dc '[:digit:]'

将YOURGITHUBUSERNAME替换为您的GitHub用户名。 将PERSONAL_ACCESS_TOKEN替换为您的个人访问令牌。 将OWNER替换为存储库所有者的Git用户名。 将REPOSITORY替换为存储库名称。

Python

1import requests
2
3base_api_url = 'https://api.github.com/repos'
4github_username = 'YOUR_USERNAME'  # 替换为您的GitHub用户名
5repository_name = 'REPO_NAME'  # 替换为存储库名称
6
7res = requests.get(f'{base_api_url}/{github_username}/{repository_name}')
8repository_size = res.json().get('size')
9print(repository_size)

将YOUR_USERNAME替换为您的GitHub用户名。 将REPO_NAME替换为存储库名称。

JavaScript

1fetch('https://api.github.com/repos/OWNER/REPO')
2  .then(v => v.json())
3  .then((v) => {
4    console.log(v['size'] + 'KB');
5})

将OWNER替换为存储库所有者的Git用户名。 将REPO替换为存储库名称。

Bookmarklet

 1javascript:(() => {
 2  let url = new URL(document.location.href);
 3  if (url.origin !== "https://github.com") {
 4    return;
 5  }
 6  if (url.pathname === "/") {
 7    return;
 8  }
 9  let p = url.pathname.slice(1, url.pathname.length);
10  let parts = p.split('/');
11  if (parts.length < 2) {
12    return;
13  }
14  let x = [parts[0], parts[1]].join('/');
15  fetch(`https://api.github.com/repos/${x}`)
16    .then(r => r.json())
17    .then((b) => alert(`${(b['size'] / 1000).toFixed(2)}mb (${b['size']}kb)`));
18})();

使用上面的脚本创建一个书签,将脚本粘贴到URL字段中。当浏览存储库时,单击此书签会弹出一个提示框,显示存储库的大小(以MB和KB为单位)。

GitHub CLI

1gh api repos/OWNER/REPO --jq '.size'

将OWNER替换为存储库所有者的Git用户名。 将REPO替换为存储库名称。

浏览器扩展

如果您使用Google Chrome浏览器,可以安装GitHub Repository Size扩展程序。

以上是关于在克隆之前查看GitHub存储库大小的详细说明。希望对您有所帮助!


相关文章推荐