Come posso vedere le dimensioni di un repository GitHub prima di clonarlo?


331

C'è un modo per vedere quanto è grande un repository Git su GitHub prima di decidere di clonarlo?

Sembra una statistica davvero ovvia / di base, ma non riesco a trovare il modo di vederlo su GitHub.



4
@KennyTM domanda molto simile, sì, ma è specifica per github piuttosto che per qualsiasi metodo che utilizza solo il protocollo git.
jhabbott,

1
Cordiali saluti, dai un'occhiata a questa estensione di Chrome che aggiunge automaticamente le dimensioni del repository al riepilogo del repository di GitHub github.com/harshjv/github-repo-size . AGGIORNAMENTO: aggiunto questo come risposta
Harsh Vakharia

Ecco un suggerimento: il mio repository più grande in assoluto contiene solo immagini di vari formati, è un repository di icone "grafica" che uso in varie app. Tuttavia, GitHub riporta la dimensione come 0. Quindi suppongo che consideri solo la dimensione dei file di origine noti e non consideri i tipi di file sconosciuti.
Jerry Dodge,

Risposte:


276

C'è un modo per accedere a queste informazioni tramite l' API GitHub .

Quando si recuperano informazioni su un repository, una proprietà denominata sizeviene valutata con le dimensioni dell'intero repository (inclusa tutta la sua cronologia), in kilobyte.

Ad esempio, il repository Git pesa circa 124 MB. La sizeproprietà del payload JSON restituita è valutato a 124283.

Aggiornare

La dimensione è infatti espressa in kilobyte in base all'utilizzo del disco del repository bare sul lato server. Tuttavia, al fine di evitare di sprecare troppo spazio con i repository con una rete di grandi dimensioni, GitHub si affida a Git Alternates . In questa configurazione, il calcolo dell'utilizzo del disco rispetto al repository nudo non tiene conto dell'archivio oggetti condiviso e quindi restituisce un valore "incompleto" tramite la chiamata API.

Queste informazioni sono state fornite dal supporto GitHub.


12
Le dimensioni in MB non sono ora -> Non è così chiaro, sembra che dipenda dal repository da interrogare ... Piccoli repository espongono le dimensioni in byte, quelle grandi in megabyte. Ho aperto un problema con il supporto di GitHub. Aggiornerò la risposta non appena il problema sarà chiuso.
nulltoken

6
Questo non sembra funzionare per i repository privati. Mi sto perdendo qualcosa? Grazie!
Annullato il

14
@nroose Try $ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}. Vedi developer.github.com/v3/#authentication
nulltoken

1
@nulltoken Qualche risposta sulla query su kB / MB ecc.?
nealmcb,

2
Ho appena effettuato un repo (9 settembre 2018) ed è kB, non MB
Jacob Stamm

109

Se sei il proprietario del repository, puoi trovare la dimensione esatta aprendo le Impostazioni accountArchivi ( https://github.com/settings/repositories ) e la dimensione del repository viene visualizzata accanto alla sua designazione.

Se non si possiede il repository, è possibile forkarlo e quindi controllare nello stesso posto.

Un po 'confuso: usa l' download as a zip fileopzione, leggi la dimensione del file indicata e poi cancellala.

Non ricordo se il download come zip ha mai funzionato, ma in ogni caso, così facendo ora scarica solo il ramo attualmente selezionato senza cronologia.


Non si dovrebbe tener conto della compressione zip? Credo che il codice sorgente e i file di testo possano essere compressi fino al 60% circa.
Sfogliando il

Non sono a conoscenza di un modo per verificare il rapporto di compressione dello zip senza completare il download. Ovviamente potresti completare il download e quindi controllare il rapporto di compressione. Tuttavia, a quel punto, potresti anche decomprimere e controllare direttamente le dimensioni del repository. Dipende davvero da quanto devi essere preciso. E se puoi permetterti di scaricare il repository per controllare.
CoatedMoose

1
Non sono riuscito a trovarlo in Settings > Repositories, ma invece ho trovato la dimensione del repository sotto Account Settings > Repositoriesla tua home page di git. Ovviamente, questo funziona solo con i repository che possiedi (o fork).
Modulitos,

Le impostazioni dell'account delle organizzazioni non sembrano mostrare le dimensioni del repository, quindi è solo se possiedi un repository come utente e non come organizzazione?
Bennett Brown,

2
La dimensione del file zip non indica affatto la dimensione effettiva del repository: 1) include solo un'istantanea del repository in una data revisione senza cronologia e 2) I repository Git sono memorizzati come file pack compressi, non memorizzare duplicati ecc.
kynan,

74

Se si utilizza il browser Google Chrome, è possibile installare l' estensione Dimensione repository GitHub .

inserisci qui la descrizione dell'immagine

Ripetere qui: https://github.com/harshjv/github-repo-size


4
qualsiasi porta firefox?
Banee Ishaque K,

2
@BaneeIshaqueK non è lo stesso ma ti mostra la dimensione del repository controlla qui
Syed Shamikh Shabbir

1
AGGIORNA Ora, funziona perfettamente anche nei repository privati ​​fintanto che fornisci il token Github.
Siddhant Rimal,

2
Ancora non affidabile, utilizza l'API GitHub, che non riporta le dimensioni corrette. Ho un repository con nient'altro che immagini (nessun codice) e l'API riporta la dimensione come 0, sebbene sia il repository più grande che ho. Questa estensione non mi mostra nemmeno le dimensioni di questo specifico repository (probabilmente perché vede 0).
Jerry Dodge,

19

@larowlan ottimo codice di esempio. Con la nuova GitHub API V3, l'istruzione curl deve essere aggiornata. Inoltre, non è più necessario il login:

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

Per esempio:

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

ritorna 931668(in KB), che è quasi un GB.


5
Questo non sembra funzionare per i repository privati. C'è qualcosa che mi manca? Grazie!
Annullato il

1
Vorrei che espandessi di più la tua risposta con alcune spiegazioni, in modo che le persone possano cambiarla in base alle proprie esigenze.
Shimmy Weitzhandler

10

Per fare questo con curl (sudo apt-get curl) e json pretty (sudo gem install jsonpretty json):

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

Sostituisci YOURGITHUBUSERNAME con il tuo nome utente GitHub (vai alla figura).

Sostituisci OWNER con il nome utente Git del proprietario del repository. Sostituisci REPOSITORY con il nome del repository.

O come un bel script Bash (incollalo in un file chiamato 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

Usalo così:

gitrepo-info larowlan pisi reel

Questo mi darà informazioni sul repository pisi / reel su GitHub.


1

Devi seguire l'API GitHub. Consulta la documentazione qui per tutti i dettagli relativi al tuo repository. Richiede di effettuare una richiesta GET come:

GET / repos /: proprietario /: repository

Devi sostituire due cose:

  1. : proprietario - il nome utente della persona proprietaria del repository
  2. : repository - Il nome del repository

Ad esempio, il mio nome utente maheshmnj e possiedo un repository, flutter-ui-nice , quindi il mio URL GET sarà:

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

Al momento della richiesta GET, verrai inondato di alcuni dati JSON e probabilmente sulla riga numero 78 dovresti vedere una chiave chiamata size che restituirà la dimensione del repository.

Suggerimento: quando lavori con JSON ti suggerisco di aggiungere un plug-in che formatta i dati JSON per facilitare la lettura di JSON. Installa il plugin .


A) Come molti riferiscono, questa dimensione non è precisa e non affidabile. B) Anche se lo fosse, le tue note sulla lettura visiva di JSON, il numero di riga e la formattazione ... tutto inutile. JSON non è pensato per gli umani, ma per i computer. Dovresti menzionare di leggere la sizechiave nella risposta, non la riga 78. Per non parlare, diversi formattatori avranno diverse interruzioni di riga in luoghi diversi, lasciando i dati desiderati su un numero di riga diverso.
Jerry Dodge,

@JerryDodge prima cosa che dovresti leggere attentamente la risposta che ho menzionato `` `dovresti vedere una chiave chiamata size ''` `e ho detto che dovresti probablyvederlo sulla riga n. 78, quindi questo indica che dovresti vedere la chiave size da qualche parte intorno al 78 , seconda cosa se le dimensioni dell'apis github non erano accurate, non credo che troverai qualcosa di più accurato dell'apis github.
Maheshmnj,

Ho un repository di immagini. Le immagini sono dati binari. Non ci sono file di testo in questo repository. GitHub segnala ovunque che consuma 0 byte. Anche il sito Web / plugin.
Jerry Dodge,

0

Per riassumere le soluzioni chakoshy di @larowlan, @VMTrooper e @vahid:

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

Per un repository privato, dovrai ottenere un token di accesso personale da https://github.com/settings/tokens .

Quindi utilizzare il seguente comando curl per ottenere i dettagli (sostituendo i valori per [token], [owner] e [name]):

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

Come accennato in precedenza, la dimensione può essere in MB o KB.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.