Re: [PATCH/RFC] recv_sideband: Band #2 always goes to stderr

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Tue, 10 Mar 2009, Johannes Sixt wrote:

> 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.

> > 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;

> 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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux