251 votes

Qu'est ce que "Auto emballage du référentiel pour une performance optimale"?

Je vais avoir un problème avec mon repo git. Pour le couple des derniers jours chaque fois que je fais un push pour le serveur j'obtiens ce message: "Auto emballage de référentiel pour des performances optimales", et il ne semble pas s'en aller et retour de la coque.

J'ai aussi essayé de vérifier une nouvelle branche et ensuite de faire un rebase sur mon précédent branche et puis n' git gc pour supprimer le solde non utilisé de l'histoire des objets et a ensuite fait un push mais toujours ce message s'affiche. S'il vous plaît laissez-moi savoir ce qui se passe avec mon repo.

338voto

Jefromi Points 127932

Version courte: il signifie ce qu'il dit, et si vous venez de le laisser terminer, tout ira bien.

Au cours de la plupart des opérations qui peuvent potentiellement augmenter le nombre de lâche (déballé) des objets dans le référentiel (y compris les pousse), Git invoque git gc --auto. Si il y a assez d'objets en vrac (par défaut, au moins 6700), il sera alors invoquer git repack -d -l pour les emballer. Si il y a un trop grand nombre de packs, il permettra également de les emballer dans un.

Un pack est un pack de delta-compressé fichier unique, contenant un grand nombre d'objets. Il est plus efficace de stocker des objets dans des packs, mais il faut du temps pour pack (compresser) objets, de sorte que Git crée initialement objets en vrac, puis les emballe dans des lots maintenant et puis, via automatique invocation de l' git gc --auto.

Si vous laissez Git finition de l'emballage, cela ne se produira à nouveau pour un certain temps. En effet, cela peut prendre du temps, surtout si vous avez beaucoup de grands objets binaires, mais si c'est le déclenchement, alors c'est un signe qu'il va probablement réduire considérablement la quantité d'espace disque pris par le repo. Si vraiment vous ne voulez pas que cela se produise, vous pouvez changer la configuration de paramètre gc.auto. Si vous passer à quelque chose de beaucoup plus grand que 6700, il va se produire moins souvent, mais quand il le fait. Si vous la diminuez, il vous reste à faire votre repack, mais par la suite, il va se produire plus souvent et de terminer plus rapidement. Si vous le réglez à 0, il va désactiver automatique de reconditionnement.

Voir man git-gc (en vertu de l' --auto) et man git-config (en vertu de l' gc.auto) pour plus d'informations.

40voto

Anders Lindén Points 1669

Pour désactiver d'un projet:

cd your_project_dir
git config gc.auto 0

Désactiver pour tous les projets sur votre ordinateur:

git config --global gc.auto 0

10voto

Rudi Points 8756

Git est en cours d'exécution git-repack, qui packs de nombreux objets(=les fichiers, les validations et les arbres) dans un fichier de pack. Git ne présente parfois, quand une heuristique dit qu'il ne peut y avoir de l'espace sauvé (un fichier de pack contient comprimé objet deltas, tandis que chaque fichier dans les objets/ répertoire contient le comprimé de contenu de fichier)

2voto

VonC Points 414372

J'espère que c' git gc --auto étape est maintenant git (2.0.1, 25 juin 2014) plus efficace.
Voir commettre 62aad18 par Nguyễn Thái Ngọc Duy (pclouds)

gc --auto: ne pas bloquer les refs en arrière-plan

9f673f9 (gc: option de configuration pour exécuter --auto en arrière - plan- 2014-02-08, Git 2.0.0) met "gc --auto" en arrière-plan pour réduire l'utilisateur le temps d'attente.
Une partie de la collecte des ordures est un pack de refs et d'élagage reflogs. Ces besoin de verrouiller certaines refs et peut annuler d'autres processus d'essayer de verrouiller la même ref.

Si gc --auto est tiré au moyen d'un script, les gc maintenant des verrous dans le fond, pouvait ne pas le script, ce qui pourrait ne jamais arriver avant 9f673f9.

Continuer à courir pack-refs et "reflog --prune" au premier plan pour arrêter parallèle réf mises à jour. Le reste des opérations d'arrière-plan (repack, de pruneau et rerere) ne devrait pas influer sur l'exécution de la commande git processus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X