Re: [PATCH/RFC] recv_sideband: Band #2 always goes to stderr
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- Mar 10, 2009, 12:14 UTC
- Message-ID
- <49B659B4.5000705@viscovery.net>
- In-Reply-To
- <alpine.DEB.1.00.0903101236480.14295@intel-tinevez-2-302>
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).
Show 11 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.
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.
- 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.
- 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.)
-- Hannes