Re: [PATCH] fetch: don't output non-errors on stderr

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

 



On Fri, Jun 25, 2010 at 02:43:27PM -0700, Junio C Hamano wrote:

> Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes:
> 
> > On Fri, Jun 25, 2010 at 17:25, Junio C Hamano <gitster@xxxxxxxxx> wrote:
> >> Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes:
> >>
> >>> Before the change error messages were drowned out by git-fetch's
> >>> non-error update notices, which didn't need my attention.
> >>
> >> I don't understand this part; care to elaborate?
> >
> > I have a cron job (github-backup) that calls git fetch. Without this
> > patch I have to run it as '> /dev/null 2>&1' and just rely on the exit
> > code,
> 
> Signaling failure with exit code is _the_ standard practice, no?
> 
> Some people seem to think unclean standard error means some error (most
> notably tcl ;-), but I think they are mistaken.

Agreed. I thought it was intentional for any human-readable progress
messages go to stderr. It is true in the case of git-fetch that stdout
is not being used for anything, but:

  1. Git should be consistent about where output goes. And other
     programs may actually produce useful output on stdout, which should
     not be mixed with human-readable verbose messages. For the sake of
     those programs, we should be consistent about sending the output to
     stderr.

  2. Fetch may be combined with other operations in script. Consider
     this toy script to print the latest origin/master to stdout:

       #!/bin/sh
       git fetch && git rev-parse origin/master

     The user sees verbose cruft on stderr, but the interesting part is
     on stdout. With your patch, the script is now broken. Yes, it's
     obviously a toy, but I don't think it inconceivable that somebody
     would not want fetch unexpectedly polluting their stdout. Even if
     it would have been a better behavior in the first place (which I
     don't agree with), changing it now means breaking scripts.

The real problem is that git is very chatty compared to other unix
programs. Most produce no output at all unless there is an error, or
human-readable non-error output on stderr only if it is a tty. We do
this already with progress meters, and this output is just another form
of progress update. So I think a patch to quell the status table when
stderr is not a tty would be better (that still can break some scripts,
too, but I am less sympathetic to people trying to save and parse
human-readable stderr messages).

Or even easier: is there a reason that "git fetch -q" would not do what
you (Ævar) want?

-Peff
--
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]