Re: [JGIT PATCH] Improve the sideband progress scaper to be more accurate
- From
Shawn O. Pearce <spearce@spearce.org>
- Date
- Jan 6, 2009, 19:27 UTC
- Message-ID
- <20090106192747.GD24578@spearce.org>
- In-Reply-To
- <alpine.LFD.2.00.0901061343000.26118@xanadu.home>
Nicolas Pitre <nico@cam.org> wrote:
> There may indeed be line fragments sent over the sideband channel, as > well as the opposite which is multiple lines sent at once in a single > packet. If you look at sideband.c you'll find about all those cases.
Thanks, that's what I thought...
Show 12 quoted lines
> In general, what you have to do is:
>
> - for each packet:
> - split into multiple chunks on line breaks ('\r' or '\n')
> - for each chunk:
> - if last chunk didn't end with a line break, or if current
> chunk is empty or only contains a line break, then skip printing
> the "remote:" prefix. Otherwise print it.
> - print the current chunk up to any line break
> - if current chunk contains a line break and other characters then
> print a sequence to clear the remaining of the screen line
> - print the line break if anyHmm. I should note that C Git still screws this up sometimes. I've seen 1.6.1 git fetch mess up the output from repo.or.cz's sideband. I'm sure Pasky isn't running JGit's daemon, its too damn fast. :-)
I don't have a spew of it handy, but late last week I saw it screw up while doing a clone off repo.or.cz.
Robin, maybe we should apply this patch? Its along the lines Nico is describing above, but because our progress code doesn't do direct display its a little less complex, we don't have to worry about clearing the current line. But I think I'm doing the chunk splitting and filtering he's talking about.
-- Shawn.