Est-il possible à distance compter de l'objet et de la taille du dépôt git?
Supposer que quelque part dans le web existe publique dépôt git. Je veux cloner, mais tout d'abord j'ai besoin d'être sûr de ce qui est de la taille de celui-ci (de combien d'objets & ko comme dans git count-objects
)
Est-il un moyen de le faire?
- Vous pouvez trouver la taille d'un GitHub hébergé référentiel grâce à leur API (voir ce DONC, la question). Je n'ai rien trouvé en rapport avec l'objet de comptage, si. Hth.
Vous devez vous connecter pour publier un commentaire.
Un peu de bidouille vous pouvez utiliser serait le suivant:
git fetch
affiche les commentaires le long de ces lignes:Les étapes sur l'extrémité distante se produisent généralement assez rapide, c'est la réception de l'étape qui peut prendre beaucoup de temps. Il ne fait pas afficher la taille totale, mais vous pouvez certainement regarder une seconde, et si vous voyez "1% ... 23.75 GiB" vous savez que vous êtes en difficulté, et vous pouvez l'annuler.
git fetch --dry-run
et puis vous n'avez pas besoin de s'inquiéter à propos de l'annulation avant le transfert de données. Mais vous êtes tous les deux à droite, c'est un imparfait bidouille.Pour github, il offrent maintenant des API pour vérifier la taille du fichier. Il fonctionne!
Ce lien: voir-la-taille-de-un-github-repo-avant-clonage-il a donné la réponse
De commande: (réponse de @VMTrooper)
Exemple:
Ne donne pas le nombre d'objets, mais si vous utilisez le navigateur Google Chrome et installer cette extension
Il ajoute les pensions de taille pour la page d'accueil:
Je pense qu'il y a deux problèmes avec cette question:
git count-objects
n'est pas vraiment représenter la taille d'un référentiel (même
git count-object -v
ne pas vraiment); si vous utilisez autre chose que de la muette de transport http, un
nouveau pack sera créé pour votre clone quand vous le faites; et (comme VonC pointu
out) tout ce que vous faites pour analyser à distance des pensions de ne pas prendre en compte la
de la copie de travail de taille.
Cela étant dit, si ils sont à l'aide de la muette http transports (github, par exemple,
ne l'est pas), vous pouvez écrire un script shell utilisé curl pour interroger les tailles de tous les
les objets et les packs. Qui pourrait vous rapprocher, mais c'est faire plus http
les demandes que vous aurez à faire à nouveau de le faire réellement le clone.
Il est possible de comprendre ce
git-fetch
serait de les envoyer à travers le fil de fer (pour unesmart http transports) et l'envoyer à analyser les résultats, mais ce n'est pas vraiment
une belle chose à faire. Essentiellement, vous demandez au serveur cible pour emballer
les résultats qui vous êtes juste de le télécharger et de le jeter loin, de sorte que vous pouvez
télécharger de nouveau pour les sauver.
Quelque chose comme ces étapes peuvent être utilisés à cet effet:
À la fin de tout cela, le serveur distant ont emballé maître/de la TÊTE et
toutes les marques pour vous et que vous avez téléchargé l'intégralité du fichier de pack juste pour
voir comment grand il sera quand vous le téléchargez lors de votre clone.
Lorsque vous enfin faire un clone, la copie de travail seront créés ainsi, de sorte que le
tout le répertoire sera plus grande que ces commandes cracher, mais le fichier de pack
est généralement la plus grande partie d'une copie de travail avec un effet important de l'histoire.
Pas que je sache:
Git n'est pas un serveur, il n'y a rien d'écoute par défaut à une demande (sauf si vous activez un gitweb, ou un gitolite couche)
Et de la commande "
git remote ...
" traite de la local copie (récupérée) à distance d'un repo.De sorte que si vous chercher quelque chose, ou
clone --bare
une distance repo, vous n'aurez pas une idée de sa taille.Et qui ne prend pas en compte la taille du répertoire de travail, une fois vérifié.