Re: [PATCH/RFC] recv_sideband: Band #2 always goes to stderr
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Mar 10, 2009, 12:52 UTC
- Message-ID
- <alpine.DEB.1.00.0903101343530.14295@intel-tinevez-2-302>
- In-Reply-To
- <49B659B4.5000705@viscovery.net>
Hi,
On Tue, 10 Mar 2009, Johannes Sixt wrote:
Show 8 quoted lines
> Johannes Schindelin schrieb: > > FWIW GitTorrent may be implemented as part of git-daemon, if Sam's > > ideas become reality. And then, sideband transport is _the_ means to > > do asyncrounous communication while pushing bytes. > > I do not see how recv_sideband() in its current form could be helpful > here (assuming that you really are thinking of sending binary data over > band #2).
I think it is a safe bet that the side band would be a good way to exchange updates to the mirror list as well as the refs list.
Show 16 quoted lines
> > On Tue, 10 Mar 2009, Johannes Sixt wrote: > >> Johannes Sixt schrieb: > >>> For use-cases that you have in mind in GitTorrent, the *protocol* > >>> may be a good choice, but the current implementation is definitely a > >>> special case. > >> > >> And it really is: Did you notice that stuff that recv_sideband sends > >> over the channel named 'err' (before my patch) has "remote: " > >> prepended on every line? That's certainly not an implementation that > >> you want if you send binary data over that band! > > > > Yes, that is unfortunate, but can be fixed easily. > > I don't believe this. Every treatment of "remote: " that you take away > from recv_sideband() you must insert somewhere else. Perhaps easy, but > certainly not as trivial as my patch.
AFAICT it would be a matter of
unsigned pf = isatty(err) ? strlen(PREFIX) : 0;
Show 6 quoted lines
> Just a reminder: You proposed to override write() on Windows in a > non-trivial way, and we are discussing the topic above because I think > that is not a good idea. The reasons are: > > - write() is a fundamental operation, and we should not mess with it out > of caution.
But we do not mess with it! We ask explicitely if we are talking about a tty.
> - Your proposal is not a catch-all. For example, combine-diff.c uses > puts() in dump_quoted_path(). If your goal was to not touch code > outside of compat/ then you need to override at least puts(), too.
>From compat/mingw.h:
-- snip -- /* * ANSI emulation wrappers */
int winansi_fputs(const char *str, FILE *stream); [...] #define fputs winansi_fputs -- snap --
... added in c09df8a, SOBbed by yourself ;-)
> - All code that writes ANSI escapes should use fprintf() anyway. > (Currently that is not the case, but all cases I'm aware of can be > fixed trivially.)
I disagree that all ANSI escapes have to go through fprintf(). Sometimes you have a buffer, and I do not like doing extra work with %.*s there.
BTW I hope that you are not annoyed by the discussion; I think it is necessary and important. I am certainly not married to my current POV; so far, I am still in favor of it, though.
Ciao, Dscho