Je souhaite afficher la taille totale du dépôt dun projet hébergé sur GitHub sans avoir à le cloner. Parfois, je fais ceci:
-
Commencez à cloner un dépôt GitHub
Réception dobjets: 45% (218 / 476), 5,50 Mio | 27 Kio / s
Vous avez déjà vidé 5 Mo? Suspendre …
^Z
-
Clonez le référentiel sur un serveur avec une connexion Internet normale juste pour voir sa taille.
- Continuer (ou abandonner) le clonage local.
Comment puis-je connaître la taille du dépôt à lavance? Dans la recherche, je vois la taille du référentiel, mais pas ailleurs.
Commentaires
- Vérifiez les réponses à cette question Stack Overflow .
Réponse
Utilisation de lAPI Github:
$ 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,
Commentaires
- Sur mac, il ny a ' aucun
-i
paramètre pourxargs
, donc ' s:$ 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
- et cest la taille en … kilo-octets?
Réponse
Dans Firefox, vous pouvez utiliser le module complémentaire GitHub Repository Size .
Commentaires
- Pourquoi le vote défavorable? Lextension ou le script utilisateur ne fonctionne pas ou contient-il des logiciels malveillants?
- Non, tout fonctionne très bien …
Réponse
Utilisez le navigateur Google Chrome et installez cette extension
Ajoute la taille du dépôt à la page daccueil:
Réponse
curl \ -H "Accept: application/vnd.github.v3+json" \ -s https://api.github.com/repos/torvalds/linux | \ jq ".size" | \ numfmt --to=iec --from-unit=1024
Explication:
- récupérer les informations du dépôt à partir de github api à laide de curl
Nous obtenons une réponse json comme celle-ci:
{ "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, ... }
-
Dirigez la réponse json vers jq parser et recherchez la paire attribut-valeur requise.
.
indique la racine du corps json etsize
est lattr requis ibute du corps racine
Résultat (la taille en ko):
3018913
- Dirigez ensuite la sortie vers 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
Sortie:
2.9G
Pour les dépôts privés, passez un jeton comme en-tête
-H "Authorization: token GITHUB_TOKEN"
remplacer GITHUB_TOKEN avec un jeton github qui a accès aux dépôts privés
https://command-not-found.com/jq
https://command-not-found.com/numfmt
Commentaires
- Pouvez-vous expliquer ce que fait cette commande? Comment cela aide-t-il dans cette situation? Merci
- Il récupère les métadonnées du référentiel en utilisant
curl
, puis extrait " size " de celui-ci en utilisantjq
, puis convertit les octets bruts en taille de fichier lisible par lhomme avecnumfmt
.
Réponse
On peut y parvenir en utilisant la console du navigateur et en exécutant
fetch("https://api.github.com/repos/[USERNAME]/[REPO]") .then(v => v.json()).then((function(v){ console.log(v["size"] + "KB") }) )
Prenons un exemple pratique.
En supposant que lon veuille trouver la taille de ce dépôt en utilisant Firefox.
Ouvrez la console avec Ctrl
+ Shift
+ K
.
Collez ensuite le code suivant
fetch("https://api.github.com/repos/goncaloperes/TimeSeries") .then(v => v.json()).then((function(v){ console.log(v["size"] + "KB") }) )
Appuyez sur Entrée et on recevra la taille du dépôt comme on peut le voir dans limage ci-dessous.