Existe-t-il un moyen de voir la taille d'un référentiel Git sur GitHub avant de décider de le cloner?
Cela semble être une statistique vraiment évidente / basique, mais je ne trouve pas du tout comment la voir sur GitHub.
Existe-t-il un moyen de voir la taille d'un référentiel Git sur GitHub avant de décider de le cloner?
Cela semble être une statistique vraiment évidente / basique, mais je ne trouve pas du tout comment la voir sur GitHub.
Réponses:
Il existe un moyen d'accéder à ces informations via l' API GitHub .
GET /repos/:user/:repo
Lors de la récupération d'informations sur un référentiel, une propriété nommée size
est évaluée avec la taille de l'ensemble du référentiel (y compris tout son historique), en kilo-octets.
Par exemple, le référentiel Git pèse environ 124 Mo. La size
propriété de la charge utile JSON retournée est évaluée à 124283
.
La taille est en effet exprimée en kilo-octets en fonction de l'utilisation du disque du référentiel nu côté serveur. Cependant, afin d'éviter de gaspiller trop d'espace avec des référentiels avec un grand réseau, GitHub s'appuie sur Git Alternates . Dans cette configuration, le calcul de l'utilisation du disque par rapport au référentiel nu ne tient pas compte du magasin d'objets partagés et renvoie donc une valeur "incomplète" via l'appel d'API.
Ces informations ont été fournies par le support GitHub.
$ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}
. Voir developer.github.com/v3/#authentication
Si vous êtes propriétaire du référentiel, vous pouvez trouver la taille exacte en ouvrant vos paramètres de compte → référentiels ( https://github.com/settings/repositories ), et la taille du référentiel s'affiche à côté de sa désignation.
Si vous ne possédez pas le référentiel, vous pouvez le bifurquer puis le vérifier au même endroit.
Un peu hacky: utilisez l' download as a zip file
option, lisez la taille de fichier indiquée puis annulez-la.
Je ne me souviens pas si le téléchargement en zip a déjà fonctionné, mais en tout cas, cela ne télécharge maintenant que la branche actuellement sélectionnée sans historique.
Settings > Repositories
, mais j'ai trouvé la taille du repo sous Account Settings > Repositories
votre page d'accueil git. Bien sûr, cela ne fonctionne qu'avec les dépôts que vous possédez (ou fork).
Si vous utilisez le navigateur Google Chrome, vous pouvez installer l' extension GitHub Repository Size .
@larowlan excellent exemple de code. Avec la nouvelle API GitHub V3, l'instruction curl doit être mise à jour. De plus, la connexion n'est plus requise:
curl https://api.github.com/repos/$2/$3 2> /dev/null | grep size | tr -dc '[:digit:]'
Par exemple:
curl https://api.github.com/repos/dotnet/roslyn 2> /dev/null | grep size | tr -dc '[:digit:]'
renvoie 931668
(en Ko), ce qui représente presque un Go.
Pour ce faire avec curl (sudo apt-get curl) et json pretty (sudo gem install jsonpretty json):
curl -u "YOURGITHUBUSERNAME" http://github.com/api/v2/json/repos/show/OWNER/REPOSITORY |
jsonpretty
Remplacez YOURGITHUBUSERNAME par votre nom d'utilisateur GitHub (allez voir la figure).
Remplacez OWNER par le nom d'utilisateur Git du propriétaire du référentiel. Remplacez REPOSITORY par le nom du référentiel.
Ou comme un joli script Bash (collez-le dans un fichier nommé 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
Utilisez-le comme ceci:
gitrepo-info larowlan pisi reel
Cela me donnera des informations sur le référentiel pisi / reel sur GitHub.
Vous devez suivre l'API GitHub. Consultez la documentation ici pour tous les détails concernant votre référentiel. Il vous oblige à faire une demande GET comme:
GET / repos /: propriétaire /: référentiel
Vous devez remplacer deux choses:
Par exemple, mon nom d'utilisateur maheshmnj et je possède un référentiel, flutter-ui-nice , donc mon URL GET sera:
https://api.github.com/repos/maheshmnj/flutter-ui-nice
Lors d'une demande GET, vous serez inondé de données JSON et probablement sur la ligne 78, vous devriez voir une clé nommée taille qui renverra la taille du référentiel.
Astuce: lorsque vous travaillez avec JSON, je vous suggère d'ajouter un plugin qui formate les données JSON pour faciliter la lecture de JSON. Installez le plugin .
size
clé dans la réponse, pas la ligne 78. Sans oublier, différents formateurs auront des sauts de ligne différents à différents endroits, laissant les données souhaitées à un numéro de ligne différent.
probably
voir sur la ligne n ° 78, ce qui indique que vous devriez voir la clé de taille quelque part autour de 78 , deuxième chose si la taille des API Github n'était pas précise, je ne pense pas que vous trouverez quelque chose de plus précis que les API Github.
Pour résumer les solutions @larowlan, @VMTrooper et @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
Pour un référentiel privé, vous devrez obtenir un jeton d'accès personnel sur https://github.com/settings/tokens .
Utilisez ensuite la commande curl suivante pour obtenir les détails (en remplaçant les valeurs par [jeton], [propriétaire] et [nom]):
curl -u git:[token] https://api.github.com/repos/[owner]/[name] 2> /dev/null | grep size
Comme mentionné précédemment, la taille peut être en Mo ou en Ko.