Quand je lance 'git gui', j'obtiens une fenêtre contextuelle qui dit
Ce référentiel contient actuellement environ 1500 objets en vrac.
Il suggère ensuite de compresser la base de données. Je l'ai déjà fait et cela réduit les objets lâches à environ 250, mais cela ne supprime pas la fenêtre contextuelle. Une nouvelle compression ne modifie pas le nombre d'objets lâches.
Notre flux de travail actuel nécessite une utilisation significative du «rebase» alors que nous passons de Perforce, et Perforce est toujours le SCM canonique. Une fois que Git sera le SCM canonique, nous ferons des fusions régulières, et le problème des objets lâches devrait être considérablement atténué.
En attendant, j'aimerais vraiment faire disparaître cette fenêtre contextuelle «utile».
Réponses:
Puisque personne n'avait encore de réponse, j'ai regardé dans le code pour voir comment supprimer le code qui affiche cette boîte de dialogue. J'ai trouvé la
hint_gc
procédure qui le fait et l'endroit où il est appelé. En même temps, j'ai remarqué qu'à la fin de 2011, une option de configuration avait été ajoutée pour désactiver la boîte de dialogue . Ce changement (qui fait partie de git-gui 0.16.0) a été fusionné avec la ligne principale de Git le 14/12/2011 .Donc, si vous utilisez Git v1.7.9 ou plus récent, vous pouvez désactiver la boîte de dialogue d'avertissement avec la commande suivante:
Si vous utilisez une version plus ancienne, vous pouvez modifier
/lib/git-core/git-gui
et supprimer laafter 1000 hint_gc
ligne, ou modifier/usr/share/git-gui/lib/database.tcl
et supprimer le corps de lahint_gc
procédure. (Ces chemins de fichiers se trouvent sur Cygwin - sur d'autres environnements, les fichiers peuvent se trouver à des emplacements différents. Pour Windows, c'est le casc:\Program Files\Git\mingw64\libexec\git-core\git-gui.tcl
)la source
after 1000 hint_gc
pour que l'avertissement se produise après10000
des objets en vrac?after 1000
fait référence au nombre de millisecondes à attendre jusqu'à ce que la boîte de dialogue s'affiche. En l'augmentant à "10000", la boîte de dialogue apparaîtra toujours, mais il lui faudra 10 secondes pour le faire à la place.database.tcl
contient la définition de la limite et peut être augmentée pour rendre le dialogue moins fréquent.Mise à jour:
git prune
«résoudrait» le problème, en ce sens qu'il supprimera ces objets en vrac(
git gc
appelsgit prune
, mais uniquement pour les objets en vrac de plus de deux semaines, par défaut).Cependant, comme le mentionne l' OP Michael Donohue dans les commentaires:
Réponse originale:
Le problème de "
git gc
" ne pas supprimer tous les objets en vrac a déjà été signalé (fin 2008, " "git gc
"ne semble plus supprimer les objets en vrac "Dans votre cas, est-ce qu'un "
git prune
" serait utile?(éventuellement en utilisant "now" dans la
gc.pruneexpire
variable de configuration, nécessaire pour que le comportement ci-dessus se produise).Vous avez également (à partir du même fil):
la source
Lorsque la fenêtre contextuelle "Loose Object", je sais qu'il est temps d'exécuter le garbage collector de git:
Après cela, la fenêtre contextuelle disparaît.
Mise à jour: (en raison de la suggestion de TED)
j'ai extrait la routine ci-dessous de
git/share/git-gui/lib/database.tcl
Vous pouvez la modifier pour répondre à vos besoins.
la source
git gc
partir de la ligne de commande a résolu le problème ... le simple fait de cliquerok
dans git gui n'a pas fait l'affaire ...Hmmmm .... Je ne vois pas d'argument de ligne de commande pour cela dans la documentation .
Je suppose que vous pouvez toujours extraire sa source, retirer le code de la boîte de dialogue et reconstruire.
la source