Follow 4 patches that rework progress.c a bit so that one stage only takes one line of output with a progress bar.
Some of the patch fix (IMHO) pointless lines to print on screen (even for debugging purposes).
With those patches, running git gc looks like:
$ git gc
Counting objects : 10095
Deltifying objects : [===================================================] 100%
Writing objects : [==========================> ] 50%[...]
Counting objects : 10095
Deltifying objects : [===================================================] 100%
Writing objects : [===================================================] 100%
Pruning objects : [===================================================] 100%I don't believe those patches are 100% okay yet, because it doesn't plays that nice during a clone (it's not horribly broken, merely surprising). But it sketches what it could look like.