Skip to content
  • Junio C Hamano's avatar
    sending errors to stdout under $PAGER · 61b80509
    Junio C Hamano authored
    
    
    If you do this (and you are not an Emacs user who uses PAGER=cat
    in your *shell* buffer):
    
            $ git init
            Initialized empty Git repository in .git/
            $ echo hello world >foo
            $ H=$(git hash-object -w foo)
            $ git tag -a foo-tag -m "Tags $H" $H
            $ echo $H
            3b18e512dba79e4c8300dd08aeb37f8e728b8dad
            $ rm -f .git/objects/3b/18e5*
            $ git show foo-tag
            tag foo-tag
            Tagger: Junio C Hamano <gitster@pobox.com>
            Date:   Sat Feb 16 10:43:23 2008 -0800
    
            Tags 3b18e512dba79e4c8300dd08aeb37f8e728b8dad
    
    you do not get any indication of error.  If you are careful, you
    would notice that no contents from the tagged object is
    displayed, but that is about it.  If you run the "show" command
    without pager, however, you will see the error:
    
            $ git --no-pager show foo-tag
            tag foo-tag
            Tagger: Junio C Hamano <gitster@pobox.com>
            Date:   Sat Feb 16 10:43:23 2008 -0800
    
            Tags 3b18e512dba79e4c8300dd08aeb37f8e728b8dad
            error: Could not read object 3b18e512dba79e4c8300dd08aeb37f8e728b8dad
    
    Because we spawn the pager as the foreground process and feed
    its input via pipe from the real command, we cannot affect the
    exit status the shell sees from git command when the pager is in
    use (I think there is not much gain we can have by working it
    around, though).  But at least it may make sense to show the
    error message to the user sitting in front of the pager.
    
    [jc: Edgar Toernig suggested a much nicer implementation than
    what I originally posted, which I took.]
    
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    61b80509