This patch series fixes two progress display issues: - When showing throughput, and the both the total and the throughput change units in the same update, than the previously shown progress bar is not cleaned up properly: Receiving objects: 25% (2901/11603), 772.01 KiB | 733.00 KiB/s Receiving objects: 27% (3133/11603), 1.43 MiB | 1.16 MiB/s s - When the progress bar is longer than the width of the terminal, then we end up with a bunch of truncated progress bar lines scrolling past: $ LANG=es_ES.UTF-8 git commit-graph write Encontrando commits para commit graph entre los objetos empaquetados: 2% (1599 Encontrando commits para commit graph entre los objetos empaquetados: 3% (1975 Encontrando commits para commit graph entre los objetos empaquetados: 4% (2633 Encontrando commits para commit graph entre los objetos empaquetados: 5% (3292 [...] Patches 4 and 5 fix these two issues, while the first three are minor preparatory cleanups and refactorings. SZEDER Gábor (5): progress: make display_progress() return void progress: return early when in the background progress: assemble percentage and counters in a strbuf before printing progress: clear previous progress update dynamically progress: break too long progress bar lines progress.c | 78 +++++++++++++++++++++++++++++++++++++++--------------- progress.h | 2 +- 2 files changed, 57 insertions(+), 23 deletions(-) -- 2.21.0.539.g07239c3a71.dirty