クローンを作成せずに、GitHubでホストされているプロジェクトの合計リポジトリサイズを表示したい。時々私はこれを行います:
-
いくつかのGitHubリポジトリのクローン作成を開始します
オブジェクトの受信:45%(218 / 476)、5.50 MiB | 27 KiB / s
すでに5MBを消費していますか?一時停止…
^Z
-
通常のインターネット接続を使用してサーバー上のリポジトリのクローンを作成します サイズを確認してください。
- ローカルクローン作成を続行(または中止)します。
リポジトリのサイズを事前に確認するにはどうすればよいですか?検索ではリポジトリのサイズが表示されますが、他の場所には表示されません。
コメント
- このStackOverflowの質問。
回答
Github APIの使用:
$ echo https://github.com/hlamer/enki.git | perl -ne "print $1 if m!([^/]+/[^/]+?)(?:\.git)?$!" | xargs -i curl -s -k https://api.github.com/repos/"{}" | grep size "size": 284,
コメント
- Macでは、'はありません
-i
パラメータxargs
なので、':$ echo https://github.com/hlamer/enki.git | perl -ne 'print $1 if m!([^/]+/[^/]+?)(?:\.git)?$!' | xargs -I{} curl -s -k https://api.github.com/repos/'{}' | grep size
- サイズは…キロバイトですか?
回答
Firefoxでは、 GitHubリポジトリサイズアドオンを使用できます。
コメント
- なぜ反対票を投じるのですか?拡張機能またはユーザースクリプトが機能しない、またはマルウェアが含まれていますか?
- いいえ、すべて正常に機能します…
回答
回答
curl \ -H "Accept: application/vnd.github.v3+json" \ -s https://api.github.com/repos/torvalds/linux | \ jq ".size" | \ numfmt --to=iec --from-unit=1024
説明:
- curlを使用して、 github api からリポジトリ情報を取得します
次のようなjson応答を受け取ります:
{ "id": 2325298, "node_id": "MDEwOlJlcG9zaXRvcnkyMzI1Mjk4", "name": "linux", "full_name": "torvalds/linux", "private": false, ... "size": 3018913, <<<This is what we need "stargazers_count": 99224, "watchers_count": 99224, ... }
-
json応答を jqパーサーにパイプし、必要な属性と値のペアを見つけます。
.
はjson本体のルートを示し、size
は必須の属性ですルートボディからのibute
出力(kB単位のサイズ):
3018913
- 次に、出力を numfmt
$ man numfmt --to=[UNIT] iec 1K = 1024, 1M = 1048576, ... --from-unit=N specify the input unit size (instead of the default 1) (it basically tells that the input is in kB(1024B) insted of B
にパイプします。出力:
2.9G
プライベートリポジトリの場合、トークンをヘッダーとして渡します
-H "Authorization: token GITHUB_TOKEN"
replaceプライベートリポジトリにアクセスできる githubトークンを持つGITHUB_TOKEN
https://command-not-found.com/jq
https://command-not-found.com/numfmt
コメント
- このコマンドの機能を説明できますか?この状況でどのように役立ちますか?ありがとう
-
curl
を使用してリポジトリのメタデータを取得し、" size "<を抽出します。jq
を使用してそこから/ div>フィールドを作成し、numfmt
を使用して生のバイトを人間が読めるファイルサイズに変換します。
回答
これは、ブラウザコンソールを使用して実行することで実現できます
fetch("https://api.github.com/repos/[USERNAME]/[REPO]") .then(v => v.json()).then((function(v){ console.log(v["size"] + "KB") }) )
実際の例を考えてみましょう。
Firefoxを使用してこのリポジトリのサイズを見つけたいと仮定します。
Ctrl
+ Shift
+ K
でコンソールを開きます。
次に次のコードを貼り付けます
fetch("https://api.github.com/repos/goncaloperes/TimeSeries") .then(v => v.json()).then((function(v){ console.log(v["size"] + "KB") }) )
Enterキーを押すと、次の画像に示すようにリポジトリのサイズが表示されます。