Git Gui: obteniendo continuamente "Este repositorio tiene actualmente aproximadamente 320 objetos sueltos".

89

Cada vez que inicio Git Gui en un proyecto en particular, recibo este mensaje:

Este repositorio tiene actualmente aproximadamente 320 objetos sueltos.

ingrese la descripción de la imagen aquí

Luego procedo a hacer clic en , y aparece este cuadro de diálogo:

ingrese la descripción de la imagen aquí

El caso es que cuando abro Git Gui de nuevo, recibo exactamente el mismo mensaje , ¡de nuevo unos 320 objetos sueltos! Es como si hacer clic en no tuviera ningún efecto.

sashoalm
fuente
¿Puedes publicar la salida de git count-objects -v?
CB Bailey
5
@TheCodeArtist Gracias, encontré la respuesta allí. Ejecutar git gcexplícitamente desde la línea de comando funcionó para mí, según este comentario .
Sashoalm

Respuestas:

81

Simplemente omitir la ventana emergente , como sugiere Cómo omitir la ventana emergente "Objeto suelto" al ejecutar 'git gui' en la respuesta aceptada, es pasar por alto el hecho de que Git le está comunicando un posible problema de rendimiento. Esto debería poder solucionarse ejecutando este comando desde la línea de comandos:

cd path/to/your/git/repo
git gc --aggressive

De la salida de git help gc:

Ejecuta una serie de tareas de limpieza dentro del repositorio actual, como comprimir revisiones de archivos (para reducir el espacio en disco y aumentar el rendimiento) y eliminar objetos inalcanzables que pueden haber sido creados a partir de invocaciones anteriores de git add.

Se anima a los usuarios a ejecutar esta tarea de forma regular dentro de cada repositorio para mantener una buena utilización del espacio en disco y un buen rendimiento operativo.

--agresivo

Por lo general, git gc se ejecuta muy rápido a la vez que proporciona una buena utilización y rendimiento del espacio en disco. Esta opción hará que git gc optimice de manera más agresiva el repositorio a costa de tomar mucho más tiempo. Los efectos de esta optimización son persistentes, por lo que esta opción solo debe usarse ocasionalmente; cada pocos cientos de conjuntos de cambios más o menos.

Esto debería evitar que el mensaje aparezca durante un tiempo.

Greg Burghardt
fuente
19
Lo extraño es que simplemente ejecutarlo git gcdesde la línea de comandos me lo arregló. Puede git guiejecutarse algo como git gc --extra-unaggressive:)
sashoalm
38
git pruneparece arreglarlo cuando git gcno lo hace.
Mahn
1
Generalmente no quieres correr con --aggressive; que hace gitque se vuelvan a calcular los deltas, que suele ser improductivo y requiere mucho tiempo; ver este post --el manpágina es engañoso. Probablemente git gcsea ​​suficiente en este caso.
Jeff Clites
16
Tuve que usar --prune=allpara deshacerse del mensaje. Ni git gcen la línea de comandos ni en las opciones --aggressiveni --prunefuncionó.
DAW
1
@JeffClites El artículo al que se refiere tiene (a partir de esta fecha) 11 años y dice: "Por esta razón, es probable que agresivo se elimine de las páginas de manual y se deje como una característica no documentada por un tiempo". Sin profundizar más, parece extraño que el mensaje roto todavía esté allí. ¿Existe la posibilidad de que el comportamiento se haya modificado desde que se escribió el artículo?
tubería
3

Yo uso el comando:

git gc --prune = ahora

y no más advertencias de objetos sueltos una vez hecho.

fuente de referencia: https://git-scm.com/docs/git-gc

AdvenC
fuente
1
Tengo que decir que esta fue la solución que funcionó para mí. Curiosamente, git gc --aggressiveno eliminó la advertencia (y tampoco lo hizo al hacer clic en la interfaz de usuario, que parece realizar un simple git gc).
saeraphin