クローンする前にGitHubリポジトリのサイズを確認するにはどうすればよいですか?


330

クローンを作成する前に、GitHub上のGitリポジトリの大きさを確認する方法はありますか?

これは本当に明白で基本的な統計のようですが、GitHubでそれを確認する方法をまったく見つけることができません。



4
@KennyTMは非常によく似た質問ですが、これはgitプロトコルのみを使用する方法ではなく、githubに固有の質問です。
jhabbott

1
参考までに、GitHubのリポジトリサマリーgithub.com/harshjv/github-repo-sizeにリポジトリサイズを自動的に追加するこのchrome拡張機能を確認してください。更新:回答としてこれを追加
Harsh Vakharia 2016

ヒントは次のとおりです。私の最大のリポジトリには、さまざまな形式の画像のみが含まれています。これは、さまざまなアプリで使用するアイコンの「アートワーク」リポジトリです。ただし、GitHubはサイズを0と報告します。したがって、既知のソースファイルのサイズのみを考慮し、不明なファイルタイプは考慮しないと想定しています。
ジェリーダッジ

回答:


276

GitHub APIを介してこの情報にアクセスする方法があります

リポジトリに関する情報を取得するとき、プロパティ sizeがは、リポジトリ全体のサイズ(すべての履歴を含む)でキロバイト単位で評価されます。

たとえば、Gitリポジトリの重みは約124 MBです。size返されるJSONペイロードのプロパティの値は124283です。

更新

実際のサイズは、サーバー側のベアリポジトリのディスク使用量に基づいてキロバイトで表されます。ただし、大規模なネットワークのリポジトリでスペースが無駄になり過ぎないようにするために、GitHubはGit Alternatesに依存しています。この構成では、ベアリポジトリに対してディスク使用量を計算しても、共有オブジェクトストアは考慮されないため、API呼び出しを通じて「不完全な」値が返されます。

この情報は、GitHubサポートによって提供されています。


12
現在MB単位のサイズではありません->明確ではありません。照会されているリポジトリに依存しているようです...小さなリポジトリはバイト単位でサイズを公開し、大きなものはメガバイト単位で公開します。GitHubサポートで問題を開きました。問題が解決したらすぐに回答を更新します。
nulltoken 2013年

6
これはプライベートリポジトリでは機能しないようです。何か不足していますか?ありがとう!
2014年

14
@nrooseお試しください$ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}developer.github.com/v3/#authenticationを
nulltoken

1
@nulltoken kB / MBなどに関するクエリに対する応答はありますか?
nealmcb 2017年

2
リポジトリをフォークしただけで(2018年9月9日)、MBではなくkBです
Jacob Stamm

109

リポジトリを所有している場合は、アカウント設定リポジトリhttps://github.com/settings/repositories)を開くと正確なサイズを見つけることができ、リポジトリサイズが指定の横に表示されます。

リポジトリを所有していない場合は、フォークしてから同じ場所で確認できます。

ややハック:download as a zip fileオプションを使用し、示されているファイルサイズを読み取ってからキャンセルします。

私が今まで働いたzipとしてダウンロードする場合は覚えているが、いずれにしても、そうすることはありません、今は唯一の既往がない現在選択されているブランチをダウンロードします。


zip圧縮を考慮に入れるべきではありませんか?ソースコードとテキストファイルは約60%まで圧縮できると思います。
出産した

ダウンロードを完了せずにzipの圧縮率を確認する方法を知りません。もちろん、ダウンロードを完了してから圧縮率を確認することもできます。ただし、その時点で、解凍してリポジトリのサイズを直接確認することもできます。それは本当にあなたがいかに正確である必要があるかに依存します。そして、チェックするリポジトリをダウンロードする余裕がある場合。
CoatedMoose 2013

1
私はそれをで見つけることができませんでしたSettings > Repositoriesが、代わりAccount Settings > Repositoriesにあなたのgitホームページの下にあるリポジトリのサイズを見つけました。もちろん、これはあなたが所有する(またはフォークする)リポジトリでのみ機能します。
modulitos 2014年

組織のアカウント設定にはリポジトリのサイズが表示されないようです。そのため、組織ではなくユーザーとしてリポジトリを所有している場合のみですか?
ベネットブラウン

2
zipファイルのサイズは、実際のリポジトリサイズのすべて示すものではありません。1)履歴のない特定のリビジョンのリポジトリのスナップショットのみが含まれ、2)Gitリポジトリは圧縮されたパックファイルとして保存されます。重複の保存など
kynan 2015年

74

Google Chromeブラウザを使用している場合は、GitHubリポジトリサイズ拡張機能をインストールできます

ここに画像の説明を入力してください

ここにリポジトリ:https : //github.com/harshjv/github-repo-size


4
Firefoxポートはありますか?
Banee Ishaque K 2017

2
@BaneeIshaqueKは同じではありませんが、ここで
Syed Shamikh Shabbir

1
更新 Githubトークンを提供する限り、プライベートリポジトリでも完全に機能します。
Siddhant Rimal、2018年

2
それでも信頼性は高くありませんが、正しいサイズを報告しないGitHub APIを使用しています。私は画像(コードなし)だけのリポジトリーを持っています。APIはサイズを0と報告しますが、これは私が持っている最大のリポジトリです。この拡張機能では、この特定のリポジトリのサイズも表示されません(おそらく0と表示されているため)。
ジェリードッジ

19

@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です。


5
これはプライベートリポジトリでは機能しないようです。何か足りないものはありますか?ありがとう!
2014年

1
あなたの答えをいくつかの説明でさらに広げて、人々が彼らのニーズに合うようにそれを変えることができるようにしたいと思います。
Shimmy Weitzhandler

10

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

YOURGITHUBUSERNAMEをGitHubユーザー名に置き換えます(図を参照)。

OWNERをリポジトリ所有者のGitユーザー名に置き換えます。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リポジトリに関する情報が得られます。


1

GitHub APIに従う必要があります。リポジトリに関するすべての詳細については、こちらのドキュメントをご覧ください。GETする必要がありますリクエスト。

GET / repos /:owner /:repository

次の2つを置き換える必要があります。

  1. :オーナー owner-リポジトリを所有する人のユーザー名
  2. :repository-リポジトリの名前

たとえば、私のユーザー名maheshmnjと私はリポジトリflutter-ui-niceを所有しているので、私のGET URLは次のようになります。

https://api.github.com/repos/maheshmnj/flutter-ui-nice

GETリクエストを行うと、いくつかのJSONデータでいっぱいになり、おそらく行番号78でsizeという名前のキーが表示されますで、リポジトリのサイズを返すというれます。

ヒント:JSONを使用する場合は、JSONを読みやすくするためにJSONデータをフォーマットするプラグインを追加することをお勧めします。プラグインをインストールします


A)多くの人が報告しているように、このサイズは正確ではなく、信頼できません。B)たとえあったとしても、JSON、行番号、およびフォーマットを視覚的に読み取ることについてのメモはすべて無意味です。JSONは人間が読むことを意図したものではなく、コンピューターが読むことを意図しています。size78行目ではなく、応答でキーを読み取ることについて言及する必要があります。言うまでもなく、フォーマッターが異なれば、場所によって改行が異なり、目的のデータは別の行番号になります。
ジェリーダッジ

@JerryDodge最初に私が言及した答えを注意深く読む必要があります `` `sizeという名前のキーが表示されるはずです ''そしてprobably、78行目でサイズキーが表示されることを示しています。第二に、github apisからのサイズが正確でなかった場合、github apisよりも正確なものが見つかるとは思いません。
maheshmnj

画像のリポジトリがあります。画像はバイナリデータです。このリポジトリにはテキストファイルがまったくありません。GitHubは、どこでも0バイトを消費することを報告します。でもウェブサイト/プラグイン。
ジェリーダッジ

0

@ 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

0

プライベートリポジトリの場合は、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の場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.