Cuando ejecuto 'git gui' me sale una ventana emergente que dice
Este repositorio actualmente tiene aproximadamente 1500 objetos sueltos.
Luego sugiere comprimir la base de datos. He hecho esto antes, y reduce los objetos sueltos a aproximadamente 250, pero eso no suprime la ventana emergente. Comprimir de nuevo no cambia la cantidad de objetos sueltos.
Nuestro flujo de trabajo actual requiere un uso significativo de 'rebase' a medida que hacemos la transición de Perforce, y Perforce sigue siendo el SCM canónico. Una vez que Git sea el SCM canónico, haremos fusiones regulares, y el problema de los objetos sueltos debería mitigarse en gran medida.
Mientras tanto, realmente me gustaría hacer que esta ventana emergente 'útil' desaparezca.
Respuestas:
Como nadie tenía aún una respuesta, busqué en el código para ver cómo eliminar el código que muestra ese diálogo. Encontré el
hint_gc
procedimiento que lo hace y el lugar donde se llama. Al mismo tiempo, noté que a finales de 2011 se agregó una opción de configuración para deshabilitar el diálogo . Este cambio (parte de git-gui 0.16.0) se fusionó con la línea principal de Git el 14/12/2011 .Entonces, si usa Git v1.7.9 o posterior, puede deshabilitar el cuadro de diálogo de advertencia con el siguiente comando:
Si está utilizando una versión anterior, puede editar
/lib/git-core/git-gui
y eliminar laafter 1000 hint_gc
línea, o editar/usr/share/git-gui/lib/database.tcl
y eliminar el cuerpo delhint_gc
procedimiento. (Estas rutas de archivo se encuentran en Cygwin; en otros entornos, los archivos pueden estar en ubicaciones diferentes. Para Windows lo esc:\Program Files\Git\mingw64\libexec\git-core\git-gui.tcl
)fuente
after 1000 hint_gc
para que la advertencia ocurra después de10000
objetos sueltos?after 1000
refiere a la cantidad de milisegundos que hay que esperar hasta que se muestre el cuadro de diálogo. Al aumentarlo a "10000", el cuadro de diálogo seguirá apareciendo, pero tardará 10 segundos en hacerlo.database.tcl
contiene la definición del límite y se puede aumentar para que el diálogo sea menos frecuente.Actualización:
git prune
"resolvería" el problema, ya que eliminará esos objetos sueltos(
git gc
llamadasgit prune
, pero solo para objetos sueltos de más de dos semanas, por defecto).Sin embargo, como el OP Michael Donohue menciona en los comentarios:
Respuesta original:
El problema de "
git gc
" no eliminar todos los objetos sueltos ya se informó (a fines de 2008, " "git gc
"ya no parece eliminar objetos sueltos "Entonces, en su caso, ¿
git prune
sería útil un " "?(posiblemente con el uso de "ahora" en la
gc.pruneexpire
variable de configuración, necesaria para que ocurra el comportamiento anterior).También tienes (del mismo hilo):
fuente
Cuando aparece la ventana emergente "Loose Object", sé que es hora de ejecutar el recolector de basura de git:
Después de eso, la ventana emergente desaparece.
Actualización: (debido a la sugerencia de TED)
Extraje la siguiente rutina de
git/share/git-gui/lib/database.tcl
Puede modificarla para satisfacer sus necesidades.
fuente
git gc
desde la línea de comando resolvió el problema ... simplemente hacer clicok
en git gui de alguna manera no funcionó ...Hmmmm .... No veo un argumento de línea de comandos para eso en los documentos .
Supongo que siempre puedes extraer su fuente, extraer el código para el diálogo y reconstruir.
fuente