Wie kann ich die Größe eines GitHub-Repositorys sehen, bevor ich es klone?

330

Gibt es eine Möglichkeit zu sehen, wie groß ein Git-Repository auf GitHub ist, bevor Sie sich entscheiden, es zu klonen?

Dies scheint eine wirklich offensichtliche / grundlegende Statistik zu sein, aber ich kann überhaupt nicht finden, wie ich sie auf GitHub sehen kann.

Jhabbott
quelle
4
@KennyTM sehr ähnliche Frage, ja, aber dies ist spezifisch für Github und nicht für irgendeine Methode, die nur das Git-Protokoll verwendet.
Jhabbott
1
Schauen Sie sich zu Ihrer Information diese Chrome-Erweiterung an, die automatisch die Repository-Größe zur GitHub-Repository-Zusammenfassung github.com/harshjv/github-repo-size hinzufügt . UPDATE: fügte dies als Antwort hinzu
Harsh Vakharia
Hier ein Hinweis: Mein absolut größtes Repository enthält nur Bilder in verschiedenen Formaten. Es ist ein "Artwork" -Repo von Symbolen, die ich in verschiedenen Apps verwende. GitHub gibt die Größe jedoch als 0 an. Ich gehe also davon aus, dass nur die Größe bekannter Quelldateien und unbekannte Dateitypen nicht berücksichtigt werden.
Jerry Dodge

Antworten:

276

Es gibt eine Möglichkeit, über die GitHub-API auf diese Informationen zuzugreifen .

Beim Abrufen von Informationen zu einem Repository eine Eigenschaft mit dem Namen size mit der Größe des gesamten Repositorys (einschließlich des gesamten Verlaufs) in Kilobyte bewertet.

Das Git-Repository wiegt beispielsweise rund 124 MB. Die sizeEigenschaft der zurückgegebenen JSON-Nutzdaten wird mit bewertet 124283.

Aktualisieren

Die Größe wird in der Tat in Kilobyte ausgedrückt, basierend auf der Festplattennutzung des serverseitigen Bare-Repositorys. Um jedoch zu vermeiden, dass bei Repositorys mit einem großen Netzwerk zu viel Speicherplatz verschwendet wird, setzt GitHub auf Git Alternates . In dieser Konfiguration berücksichtigt die Berechnung der Festplattennutzung anhand des Bare-Repositorys nicht den gemeinsam genutzten Objektspeicher und gibt daher über den API-Aufruf einen "unvollständigen" Wert zurück.

Diese Informationen wurden vom GitHub-Support bereitgestellt.

nulltoken
quelle
12
Ist die Größe jetzt nicht in MB -> Es ist nicht so klar, es sieht so aus, als ob es vom abgefragten Repo abhängt ... Kleine Repos legen die Größe in Bytes offen, große in Megabyte. Ich habe ein Problem beim GitHub-Support geöffnet. Ich werde die Antwort aktualisieren, sobald das Problem geschlossen ist.
nulltoken
6
Dies scheint für private Repos nicht zu funktionieren. Vermisse ich etwas Vielen Dank!
Nroose
14
@roose Versuchen $ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}. Siehe developer.github.com/v3/#authentication
nulltoken
1
@nulltoken Gibt es eine Antwort auf die Frage zu kB / MB usw.?
Nealmcb
2
Ich habe gerade ein Repo gegabelt (9. September 2018) und es ist kB, nicht MB
Jacob Stamm
109

Wenn Sie das Repository besitzen, können Sie die genaue Größe ermitteln, indem Sie Ihre KontoeinstellungenRepositorys ( https://github.com/settings/repositories ) öffnen. Die Repository-Größe wird neben der Bezeichnung angezeigt.

Wenn Sie das Repository nicht besitzen, können Sie es teilen und dann an derselben Stelle überprüfen.

Etwas hackig: Verwenden Sie die download as a zip fileOption, lesen Sie die angegebene Dateigröße und brechen Sie sie ab.

Ich erinnere mich nicht, ob das Herunterladen als Zip jemals funktioniert hat, aber auf jeden Fall wird jetzt nur der aktuell ausgewählte Zweig ohne Verlauf heruntergeladen.

CoatedMoose
quelle
Sollte man die Zip-Komprimierung nicht berücksichtigen? Quellcode und Textdateien können meiner Meinung nach zu 60% komprimiert werden.
Jungvogel
Mir ist keine Möglichkeit bekannt, das Komprimierungsverhältnis der Zip-Datei zu überprüfen, ohne den Download abzuschließen. Natürlich können Sie den Download abschließen und dann das Komprimierungsverhältnis überprüfen. Zu diesem Zeitpunkt können Sie die Repo-Größe jedoch auch direkt entpacken und überprüfen. Es hängt wirklich davon ab, wie genau Sie sein müssen. Und wenn Sie es sich leisten können, das Repo herunterzuladen, um es zu überprüfen.
CoatedMoose
1
Ich konnte es nicht finden Settings > Repositories, sondern fand die Repo-Größe unter Account Settings > RepositoriesIhrer Git-Homepage. Dies funktioniert natürlich nur mit Repos, die Sie besitzen (oder mit einer Gabel).
Modulitos
Die Kontoeinstellungen von Organisationen scheinen keine Repo-Größe anzuzeigen. Sie können also nur dann ein Repo als Benutzer und nicht als Organisation besitzen.
Bennett Brown
2
Die Größe der Zip-Datei gibt überhaupt keinen Hinweis auf die tatsächliche Repository-Größe: 1) Sie enthält nur eine Momentaufnahme des Repositorys bei einer bestimmten Revision ohne Verlauf und 2) Git-Repositorys werden als komprimierte Pack-Dateien gespeichert, nicht Speichern Sie Duplikate usw.
Kynan
74

Wenn Sie den Google Chrome-Browser verwenden, können Sie die Erweiterung GitHub Repository Size installieren .

Geben Sie hier die Bildbeschreibung ein

Repo hier: https://github.com/harshjv/github-repo-size

Große Welle
quelle
4
irgendein Firefox-Port?
Banee Ishaque K
2
@BaneeIshaqueK es ist nicht das gleiche, aber es zeigt Ihnen die Repo-Größe überprüfen Sie es hier
Syed Shamikh Shabbir
1
UPDATE Funktioniert jetzt auch in privaten Repositorys einwandfrei, solange Sie das Github-Token bereitstellen.
Siddhant Rimal
2
Immer noch nicht zuverlässig, verwendet es die GitHub-API, die nicht die richtige Größe meldet. Ich habe ein Repository mit nur Bildern (kein Code) und die API gibt die Größe als 0 an, obwohl es das größte Repo ist, das ich habe. Diese Erweiterung zeigt mir nicht einmal die Größe dieses speziellen Repos (wahrscheinlich, weil es 0 sieht).
Jerry Dodge
19

@larowlan toller Beispielcode. Mit der neuen GitHub API V3 muss die Curl-Anweisung aktualisiert werden. Außerdem ist der Login nicht mehr erforderlich:

curl https://api.github.com/repos/$2/$3 2> /dev/null | grep size | tr -dc '[:digit:]'

Zum Beispiel:

curl https://api.github.com/repos/dotnet/roslyn 2> /dev/null | grep size | tr -dc '[:digit:]'

gibt 931668(in KB) zurück, was fast ein GB ist.

VMTrooper
quelle
5
Dies scheint für private Repos nicht zu funktionieren. Fehlt mir etwas? Vielen Dank!
Nroose
1
Ich wünschte, Sie würden Ihre Antwort mit einigen Erklärungen erweitern, damit die Leute sie an ihre Bedürfnisse anpassen können.
Shimmy Weitzhandler
10

Um dies mit Curl (Sudo Apt-Get Curl) und Json Pretty (Sudo Gem Install Jsonpretty Json) zu tun:

curl -u "YOURGITHUBUSERNAME" http://github.com/api/v2/json/repos/show/OWNER/REPOSITORY |
  jsonpretty

Ersetzen Sie YOURGITHUBUSERNAME durch Ihren GitHub-Benutzernamen (siehe Abbildung).

Ersetzen Sie den EIGENTÜMER durch den Git-Benutzernamen des Repository-Besitzers. Ersetzen Sie REPOSITORY durch den Repository-Namen.

Oder als nettes Bash-Skript (fügen Sie dies in eine Datei namens gitrepo-info ein):

#!/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

Verwenden Sie es so:

gitrepo-info larowlan pisi reel

Dadurch erhalte ich Informationen zum pisi / reel- Repository auf GitHub.

Larowlan
quelle
1

Sie müssen der GitHub-API folgen. In der Dokumentation finden Sie alle Details zu Ihrem Repository. Es erfordert, dass Sie ein GET machen Anfrage stellen als:

GET / repos /: owner /: repository

Sie müssen zwei Dinge ersetzen:

  1. :Inhaber - der Benutzername der Person, der das Repository gehört
  2. : repository - Der Name des Repositorys

ZB mein Benutzername maheshmnj und ich besitzen ein Repository, flutter-ui-nice , also lautet meine GET-URL:

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

Wenn Sie eine GET-Anfrage stellen, werden Sie mit einigen JSON-Daten überflutet. In Zeile 78 sollten Sie wahrscheinlich einen Schlüssel mit dem Namen size sehen angezeigt werden, der die Größe des Repositorys zurückgibt.

Tipp: Wenn Sie mit JSON arbeiten, empfehlen wir Ihnen, ein Plugin hinzuzufügen, das die JSON-Daten formatiert, um das Lesen von JSON zu vereinfachen. Installieren Sie das Plugin .

maheshmnj
quelle
A) Wie viele berichten, ist diese Größe nicht genau und nicht zuverlässig. B) Auch wenn dies der Fall war, sind Ihre Notizen zum visuellen Lesen des JSON, der Zeilennummer und der Formatierung sinnlos. JSON ist nicht für Menschen zum Lesen gedacht, sondern für Computer zum Lesen. Sie sollten erwähnen, dass Sie den sizeSchlüssel in der Antwort lesen sollen , nicht Zeile 78. Ganz zu schweigen davon, dass verschiedene Formatierer an verschiedenen Stellen unterschiedliche Zeilenumbrüche haben und die gewünschten Daten an einer anderen Zeilennummer belassen.
Jerry Dodge
@ JerryDodge Als erstes sollten Sie die Antwort, die ich erwähnt habe, sorgfältig lesen. `` `Sie sollten einen Schlüssel mit dem Namen size sehen` `` und ich sagte, Sie sollten probablyihn in Zeile Nr. 78 sehen, damit Sie den Größenschlüssel irgendwo um 78 sehen sollten Zweitens, wenn die Größe der Github-Apis nicht genau war, denke ich nicht, dass Sie etwas genaueres als die Github-Apis finden werden.
Maheshmnj
Ich habe ein Repository mit Bildern. Bilder sind Binärdaten. In diesem Repo befinden sich überhaupt keine Textdateien. GitHub meldet überall, dass es 0 Bytes verbraucht. Sogar die Website / das Plugin.
Jerry Dodge
0

Um die Lösungen von @larowlan, @VMTrooper und @vahid chakoshy zusammenzufassen:

#!/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
Golem
quelle
0

Für ein privates Repository benötigen Sie ein persönliches Zugriffstoken von https://github.com/settings/tokens .

Verwenden Sie dann den folgenden Befehl curl, um die Details abzurufen (indem Sie [Token], [Eigentümer] und [Name] durch Werte ersetzen):

curl -u git:[token] https://api.github.com/repos/[owner]/[name] 2> /dev/null | grep size

Wie bereits erwähnt, kann die Größe in MB oder KB angegeben werden.

Mike Godin
quelle