]> git.ipfire.org Git - thirdparty/git.git/commit
sideband: clear full line when printing remote messages
authorRené Scharfe <l.s.r@web.de>
Sun, 10 May 2026 12:42:04 +0000 (14:42 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sun, 10 May 2026 23:26:41 +0000 (08:26 +0900)
commit31e8fcabd8a75b2c27cd4c98ea694c6836c29ad2
treecd54b6848d21ed69a965e4b88cc423ac6484e6da
parent9a2fb147f2c61d0cab52c883e7e26f5b7948e3ed
sideband: clear full line when printing remote messages

demultiplex_sideband() can write its remote output over active local
progress lines.  That's why it has been using ANSI code Erase in Line on
smart terminals to clear the remainder of lines it writes since
ebe8fa738d (fix display overlap between remote and local progress,
2007-11-04).

This erases the last character of remote lines that span the full width
of the terminal, though, as the cursor is stuck at the rightmost column
for them.  It's the same effect as in the following command, which
clears the 1 and shows just the leading zeros:

   $ EL="\033[K"
   $ printf "%0${COLUMNS}d${EL}\n" 1

If we move the ANSI code to the start we get to see the 1 as well:

   $ printf "${EL}%0${COLUMNS}d\n" 1

So do the same in demultiplex_sideband() and emit the ANSI code as a
prefix instead of a suffix to show messages in full even if they happen
to fill the whole width of a smart terminal.

Reported-by: Hugo Osvaldo Barrera <hugo@whynothugo.nl>
Suggested-by: Chris Torek <chris.torek@gmail.com>
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sideband.c