Je suis occasionnellement sur une connexion Internet coûteuse et je voudrais savoir (au moins environ) combien de données seront poussées vers la télécommande dans un git push
.Prédire combien de données seront poussées dans une poussée git
Répondre
En fait, je pense que j'aime assez mon commentaire pour l'afficher comme réponse! Lorsque vous appuyez sur, git crée un pack de tous les objets nécessaires et les télécharge vers la télécommande. Cela signifie que nous cherchons un moyen de prédire la taille de l'emballage. Comme les packs sont compressés, il est très difficile de faire quoi que ce soit en fonction des différences ou des tailles d'objets; ce que nous voulons vraiment faire, c'est juste voir à quel point ce pack sera grand. Ce serait bien si vous pouviez interrompre la poussée, juste après avoir construit le pack, et décider de continuer en fonction de la taille du pack, mais je ne pense pas que ce soit possible. Ma meilleure idée est d'essayer de recréer le pack qui serait poussé et d'inspecter ça. Un fichier groupé est essentiellement un pack avec des informations d'en-tête (consultez the source si vous le souhaitez). Cela signifie que c'est une commande pratique en porcelaine qui va créer un fichier avec la taille qui vous intéresse. (Beaucoup plus facile que d'essayer d'utiliser pack-objects manuellement.) Utilisez quelque chose comme ceci:
git bundle create foo.bundle ^origin/master master
Cela vous donnera un paquet contenant tout le nécessaire pour obtenir à maîtriser, étant donné que la télécommande est d'origine/maître - exactement la même chose qui devrait être poussé par git push origin master
. Si vous avez des branches supplémentaires, vous pouvez les utiliser également; il prend juste les arguments rev-list:
git bundle create foo.bundle ^origin/master master ^origin/topic topic ...
Vérifiez simplement la taille de cet ensemble créé; cela devrait être presque équivalent à ce que vous finirez par pousser. Cela signifie que vous allez devoir créer le pack deux fois (une fois avec le bundle et une fois avec le push), mais à moins que ce soit une grosse poussée qui prend beaucoup de temps à emballer, ça ne devrait pas être un énorme problème.
git diff HEAD origin/master --stat
Cela ne montre pas la bande passante, je reçois: git push --dry-run -v Poussant à [email protected]: projet Pour [email protected]: projet fbe6184..7b7a3bc maître -> maître –
@ Gerald, essayez d'utiliser la commande git diff à la place. L'exemple que j'ai posté ci-dessus vous montrera quels fichiers ont changé et combien de lignes d'insertions et de suppressions dans chaque fichier. Est-ce assez d'information pour passer? –
c'est une estimation assez approximative, quand la compression et les différences binaires sont impliquées. Aussi fastidieux s'il y a beaucoup de modifications. –
Vous pouvez trouver à peu près exactement en exécutant un peu similaire de Bash à ce que Git fonctionnera en interne quand il crée le fichier pack pour pousser:
$ echo $(git merge-base HEAD origin/master)..HEAD | git pack-objects --revs --thin --stdout -q | wc -c
Ce devrait afficher le nombre d'octets du paquet fichier Git enverrait. Ventilées:
# Find the common ancestor of HEAD and origin/master, and output a
# revision range (<a>..<b>) string to git pack-objects.
echo $(git merge-base HEAD origin/master)..HEAD
# Generate the pack file containing the revision range specified above, writing
# it to stdout.
git pack-objects --revs --thin --stdout -q
# Print the byte count of the file contents passed via stdin.
wc -c
Ceci est conditionnel à faire un git fetch
juste avant pousser; Si vous ne le faites pas, Git ne pourra pas trouver l'ancêtre commun et enverra le contenu de votre dépôt entier. Voir this answer pour plus d'informations.
- 1. Combien d'index seront réellement utilisés?
- 2. git raccroche inopinément (mais la poussée fonctionne)
- 3. svn ci après une poussée git sur github
- 4. CLLocationCoordinate2D sans savoir combien seront dans le tableau?
- 5. Codaset: impossible de faire une poussée initiale!
- 6. Prédire les valeurs de données manquantes dans une base de données
- 7. git: comment voir les changements dus à la poussée?
- 8. git: comment voir les changements la prochaine poussée enverra
- 9. Optimiser CUDA avec poussée dans une boucle
- 10. git erreur de poussée: pack-objets sont morts avec une erreur étrange
- 11. Comment compter combien d'objets seront renvoyés par une ObjectQuery <T>?
- 12. Prédire zéro à l'octet
- 13. base de données Accidentellement engagé dev git
- 14. Problème avec git sur windows ... les poussées ne se terminent pas/timeout
- 15. Poussée constante de données SQL Server vers MySQL
- 16. prédire la sortie
- 17. hudson builds dernières poussées à updatesite
- 18. Combien de données une liste peut-elle contenir au maximum?
- 19. Tables de base de données - combien de bases de données?
- 20. jQuery - Combien de cellules dans une rangée
- 21. Prédire la longueur d'une chaîne cryptée
- 22. Problème de poussée de fonction Javascript
- 23. Combien et quelles annotations de données utiliser?
- 24. Combien d'insertions pouvez-vous avoir dans une transaction sql?
- 25. Comment prédire/calculer la longueur de champ de valeurs numériques (INT) dans MySQL?
- 26. Problème de poussée authentifié par Mercurial
- 27. GWT Stock Watcher - Interrogation non poussée?
- 28. Une solution évolutive pour la poussée côté serveur?
- 29. Prédire <Bool>, inutile ou utile?
- 30. Combien UITableView peut placer dans une vue?
Cela semble difficile ... les poussées sont compressées, et donc pour vraiment savoir, vous voudriez interrompre après avoir créé le pack mais avant qu'il n'envoie. Vous pouvez essayer de vérifier la taille du paquet correspondant, mais cela signifie que vous empaquetez deux fois. – Cascabel