[PATCH] upload-pack: squelch progress indicator if client does not request sideband
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Jun 15, 2009, 21:24 UTC
- Message-ID
- <200906152324.43435.j6t@kdbg.org>
- In-Reply-To
- <20090615145716.GW16497@spearce.org>
upload-pack runs pack-objects, which generates progress indicator output on its stderr. If the client requests a sideband, this indicator is sent to the client; but if it did not, then the progress is written to upload-pack's own stderr.
Since the previous patch git-daemon monitors stderr of the service program, such as upload-pack, and copies it to the syslog. This would now also copy the progress indicator to the syslog. We avoid this by calling pack-objects without --progress if there is no sideband channel to the client.
Signed-off-by: Johannes Sixt <j6t@kdbg.org> --- On Montag, 15. Juni 2009, Shawn O. Pearce wrote:
Show 5 quoted lines
> IIRC only upload-pack produces progress (from pack-objects). > It does so by using a pipe on fd 2, and either copying it down > to the client via side-band, or discarding it. So progress data > shouldn't ever appear on upload-pack's own fd 2, which means you > won't get it in this syslog thing.
Unfortunately, upload-pack *does* write the progress to fd 2, and this fixes it.
-- Hannes
upload-pack.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/upload-pack.c b/upload-pack.c index edc7861..fef8be5 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -521,6 +521,15 @@ static void receive_needs(void) } if (debug_fd) write_in_full(debug_fd, "#E\n", 3); + + /* + * If upload-pack is run from the daemon and the client did not + * request a sideband, the progress output produced by pack-objects + * would go to the syslog. Squelch it. + */ + if (!use_sideband) + no_progress = 1; + if (depth == 0 && shallows.nr == 0) return; if (depth > 0) {
-- 1.6.3.17.g1665f