为了使用github API获取大小,我可以做一个curl并从中提取大小,如下所示。
curl -H "Authorization: token <token>" https://api.github.com/repos/<org>/<repo> | jq | grep size
但是,当我镜像克隆该repo并在repo目录中执行du -sh .时,我看到了不同的值。我错过了什么?有没有办法使用github API获得镜像克隆大小,而不是将其克隆到本地并在其上使用du?
du -sh .
du
ego6inou1#
不,GitHub默认不收集垃圾对象,所以它在磁盘上的存储库大小可能包含许多未使用的对象。因此,GitHub在服务请求之前无法知道磁盘上的哪些数据将用于满足该请求,以及如何在连接上(因此,在克隆的结果包文件中)对这些数据进行增量和压缩。此外,由于GitHub可以一次存储多个包,它可以存储相同对象的多个副本以确保包是完整的。因此,磁盘上的内容可能比克隆的内容大。未来的重新打包可能会使仓库比现在更小(或更大)。API将提供GitHub磁盘上repo大小的近似值,但它不能保证在任何给定情况下您将获得多大的大小。
1条答案
按热度按时间ego6inou1#
不,GitHub默认不收集垃圾对象,所以它在磁盘上的存储库大小可能包含许多未使用的对象。因此,GitHub在服务请求之前无法知道磁盘上的哪些数据将用于满足该请求,以及如何在连接上(因此,在克隆的结果包文件中)对这些数据进行增量和压缩。
此外,由于GitHub可以一次存储多个包,它可以存储相同对象的多个副本以确保包是完整的。因此,磁盘上的内容可能比克隆的内容大。未来的重新打包可能会使仓库比现在更小(或更大)。
API将提供GitHub磁盘上repo大小的近似值,但它不能保证在任何给定情况下您将获得多大的大小。