在克隆之前查看github repo的大小?

jha*_*ott 293 github

在你决定克隆它之前,有什么方法可以看到gitub上的git repo有多大?这似乎是一个非常明显/基本的统计数据,但我根本找不到如何在github上看到它.

nul*_*ken 251

有一种方法可以通过GitHub API访问这些信息.

检索有关存储库的信息时,命名的属性将size使用整个存储库的大小(包括其所有历史记录)进行估值,单位为千字节.

例如,Git存储库的权重约为40Mb.size返回的JSON有效负载的属性值为124283.

更新:

根据服务器端裸存储库的磁盘使用情况,确实以千字节为单位表示大小.但是,为了避免使用大型网络的存储库浪费太多空间,GitHub依赖于Git Alternates.在此配置中,针对裸存储库计算磁盘使用量不考虑共享对象存储,因此通过API调用返回"不完整"值.

这些信息由GitHub支持提供.

  • 现在不是MB的大小 - >它不是那么清楚,看起来它取决于被查询的repo ...小repos暴露大小的字节,大的以兆字节为单位.我在GitHub的支持下打开了一个问题.一旦问题结束,我会立即更新答案. (12认同)
  • @nroose试试`$ curl -u"{:username}"https://api.github.com/repos/ {:organization}/{:repository}`.请参阅https://developer.github.com/v3/#authentication (12认同)
  • 这似乎不适用于私人回购.我错过了什么吗?谢谢! (5认同)
  • 刚刚分叉了一个 repo(2018 年 9 月 9 日),它是 kB,而不是 MB (2认同)
  • 来到这里寻找关于为什么 GitHub API 返回比实际下载的存储库少得多的答案。原来这个文件大小(API 没有明确记录,但似乎以 KB 为单位)不是很可靠。 (2认同)

Coa*_*ose 91

如果您拥有回购,您可以通过打开Account Settings > Repositories(https://github.com/settings/repositories)找到确切的大小,并在其名称旁边显示回购大小.

如果您不拥有存储库,则可以将其分叉,然后在同一位置进行检查.

有点hacky:使用该download as a zip file选项,读取指示的文件大小然后取消它.

我不记得下载拉链是否有效,但无论如何,这样做现在只下载当前选定的没有历史记录的分支.

  • 组织的帐户设置似乎不显示存储库大小,因此只有当您作为用户而不是组织拥有存储库时才显示存储库大小? (4认同)
  • 我在“设置 > 存储库”中找不到它,而是在 git 主页的“帐户设置 > 存储库”下找到了存储库大小。当然,这仅适用于您拥有(或分叉)的存储库。 (2认同)
  • 无法查看私人仓库的大小,grr (2认同)
  • zip文件的大小*实际存储库大小*根本没有指示:1)它只包含给定版本的存储库的快照,没有历史记录; 2)Git存储库存储为压缩的包文件,不要存储重复数据等 (2认同)

Big*_*ave 72

如果您使用Google Chrome浏览器,则可以安装GitHub存储库大小扩展程序.

在此输入图像描述

回复:https://github.com/harshjv/github-repo-size

  • 仍然不可靠,它使用 GitHub API,它没有报告正确的大小。我有一个只有图像(没有代码)的存储库,API 报告大小为 0,尽管它是我拥有的最大存储库。这个扩展甚至没有向我显示这个特定 repo 的大小(可能是因为它看到 0)。 (3认同)
  • 任何firefox端口? (2认同)
  • @BaneeIshaqueK它不一样,但它确实显示了回购大小检查它[这里](https://addons.mozilla.org/en-US/firefox/addon/github-repo-size/) (2认同)

NVR*_*VRM 34

从浏览器使用 JavaScript,因为Github API启用了CORS

fetch('https://api.github.com/repos/webdev23/source_control_sentry')
  .then(v => v.json()).then((v) => {
     console.log(v['size'] + 'KB')
  }
)
Run Code Online (Sandbox Code Playgroud)

  • 卷曲?浏览器扩展?NVRM 的答案实际上是该主题上最好的答案。被严重低估。谢谢NVRM! (5认同)
  • 喜欢这个答案。只需几秒钟即可获得尺寸。 (3认同)

小智 15

@larowlan很棒的示例代码.使用新的GitHub API V3,需要更新curl语句.此外,不再需要登录:

curl https://api.github.com/repos/$2/$3 2> /dev/null | grep size | tr -dc '[:digit:]'
Run Code Online (Sandbox Code Playgroud)

  • 这似乎不适用于私人回购.有什么我想念的吗?谢谢! (4认同)

woo*_*nan 10

如其他答案所示,可以通过 获取尺寸api.github.com。它位于size返回的 JSON 对象的属性中。

\n

要获取它,只需向您的存储库 URL 添加一个额外的子域api并使用以下命令扩展存储库路径/repos

\n
# For public repos ->\n#     Repo example: Axios\n#     Repo URL: https://github.com/axios/axios\n        \n             \xe2\xa4\xb5              \xe2\xa4\xb5\ncurl https://api.github.com/repos/axios/axios\n\n# For private repos ->\n#   Repo example: My-repo\n#   Repo URL: https://github.com/my-org/my-repo\n\ncurl https://{username}:{api-token}@api.github.com/repos/{orgname}/{reponame}\n\n
Run Code Online (Sandbox Code Playgroud)\n
\n

由于它只是 URL,因此您可以使用任何编程语言获取数据。

\n
\n

响应将类似于:

\n
// Much more props inside\n{\n  "id": 23088740,\n  "name": "axios",\n  "full_name": "axios/axios",\n  "private": false,\n  "size": 4396,\n  "default_branch": "v1.x",\n  "visibility": "public",\n  "network_count": 9581,\n  "subscribers_count": 1213\n}\n
Run Code Online (Sandbox Code Playgroud)\n

对我们来说最重要的是size。它现在已经存在Kb,但将来可能会改变(就像已经发生的那样)。

\n

但是...\n我测试了很多次,发现 repo 的实际大小和上述机制显示的大小相差太大。

\n

让我们给出相同的axios存储库:

\n
    \n
  • 4396api.github.com -> Kb -> ~ 4.29Mb中显示的大小
  • \n
\n

如果克隆完整的存储库会怎样:

\n
    \n
  • clone repo.git使用命令拉取存储库
  • \n
  • 通过命令获取体重du -sh ./axios
  • \n
  • 有 -> 8.0Mb
  • \n
  • .git从里面删除文件夹
  • \n
  • 有 -> 2.6Mb
  • \n
\n
\n

不好,因为size~ 4.29Mb 不是8,或者2.6Mb 也不是

\n
\n

如果仅克隆最新的提交会怎样:

\n
    \n
  • 拉取带标志的存储库--depth 1,例如clone repo --depth 1
  • \n
  • 通过命令获取体重du -sh ./axios
  • \n
  • 有 -> 3.2Mb ( that\'s close)
  • \n
  • .git从里面删除文件夹
  • \n
  • 有 -> 相同的2.6Mb
  • \n
\n
\n

不好,因为size~ 4.29Mb 不是3.2,或者2.6Mb 也不是

\n
\n

如果只克隆一个分支怎么办:

\n
    \n
  • 在上面的 JSON 中,我们有一个参数,称为default_branch. 让我们克隆
  • \n
  • -b v1.x --single-branch拉取带标志的存储库
  • \n
  • 通过命令获取体重du -sh ./axios
  • \n
  • 有 -> 7.5Mb ( that\'s close)
  • \n
  • 从里面删除.git文件夹给出相同的2.6Mb
  • \n
\n
\n

仍然不好,因为size〜Mb4.29不是7.5或者2.6Mb

\n
\n

因此,size参数显示的内容接近最新提交,但它不是存储库的完全正确的大小。

\n
\n

我在上面展示了它如何与axios存储库配合使用,但是使用不同存储库进行的测试显示了相同的结果。

\n
\n

这是我的经验。

\n


小智 8

用curl(sudo apt-get curl)和json pretty(sudo gem install jsonpretty json)做到这一点

curl -u "YOURGITHUBUSERNAME" http://github.com/api/v2/json/repos/show/OWNER/REPO |
  jsonpretty
Run Code Online (Sandbox Code Playgroud)

用您的git hub用户名替换YOURGITHUBUSERNAME(如图).用repo所有者的git用户名替换OWNER用repo名称替换REPO.

或者作为一个很好的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
Run Code Online (Sandbox Code Playgroud)

像这样使用

gitrepo-info larowlan pisi reel
Run Code Online (Sandbox Code Playgroud)

这将给我关于github上的pisi/reel repo的信息.


Nat*_*ler 5

如果您想了解自己的存储库的大小。

您所要做的就是转到 GitHub 设置存储库,您可以在浏览器中看到所有大小,无需额外工作。

https://github.com/settings/repositories

  • 截至 2022 年 2 月 5 日,这似乎适用于个人资料,但不适用于组织中的存储库。 (7认同)
  • 这似乎不再显示。 (2认同)