git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Git 1.8.4.2: 'git-rev-parse --is-inside-git-dir' wrong output!

From
Ville Walveranta <walveranta@gmail.com>
Date
Nov 2, 2013, 22:58 UTC
Message-ID
<CACbqpSs3DcHuypbBwLJ6Dbd5nKz6c=oozTxyJepEmi1Zis7WRQ@mail.gmail.com>
In-Reply-To
<20131102202041.GF24023@serenity.lan>

Yes, stderr redirection in a subshell seems to work ok. Since I'm creating a small git utility script I ended up doing:

-- #!/bin/bash

(git rev-parse --git-dir >/dev/null 2>&1)
if [ $? -ne 0 ] ; then
  echo "Not in a git repo"
else
  echo "Git repo; proceeding.."
  # more logic..
fi
-- 
That works! Thanks for your help!

Ville

On Sat, Nov 2, 2013 at 3:20 PM, John Keeping <john@keeping.me.uk> wrote:
> On Sat, Nov 02, 2013 at 02:42:04PM -0500, Ville Walveranta wrote:
>> Without the functionality such as that 1.7.9.5 still offered, it is
>> now not possible to use "git-rev-parse --is-inside-work-tree" to
>> detect whether the current location is controlled by a git repository
>> without emitting the "fatal: Not a git
>> repository (or any of the parent directories): .git" error message,
>> when it is not. There is no functional "--quiet" switch, and the usual
>> error/std redirection to /dev/null doesn't seem to work to squelch the
>> output.
>
> How doesn't redirection work?  The message is printed to stderr; the
> snippet I posted below does indeed squelch the output.
>
>> If "--is-inside-git-dir" and "--is-inside-work-tree" are indeed not
>> supposed to emit "false" when outside of a git repository, perhaps
>> there is another way I can use (in a bash script) to cleanly detect
>> whether a specific path is part of a git repo or not?
>
> Something like this, maybe?
>
>     (cd "$dir" && git rev-parse --git-dir >/dev/null 2>&1)
>
>> On Sat, Nov 2, 2013 at 12:03 PM, Philip Oakley <philipoakley@iee.org> wrote:
>> > From: "John Keeping" <john@keeping.me.uk>
>> > Sent: Saturday, November 02, 2013 2:06 PM
>> >
>> >> On Sat, Nov 02, 2013 at 01:47:02PM -0000, Philip Oakley wrote:
>> >>>
>> >>> From: "John Keeping" <john@keeping.me.uk>
>> >>> Sent: Saturday, November 02, 2013 10:58 AM
>> >>> > On Fri, Nov 01, 2013 at 06:19:51PM -0500, Ville Walveranta wrote:
>> >>> >> "git-rev-parse --is-inside-git-dir" outputs "fatal: Not a git
>> >>> >> repository (or any of the parent directories): .git", instead of
>> >>> >> "false" when outside of a git directory.  "--is-inside-work-tree"
>> >>> >> behaves the same way. Both commands work correctly (i.e. output
>> >>> >> "true") when inside a git directory, or inside a work tree,
>> >>> >> respectively.
>> >>> >
>> >>> > I think that's intentional - and it looks like the behaviour has
>> >>> > not
>> >>> > changed since these options were added.  With the current behaviour
>> >>> > you
>> >>> > get three possible outcomes from "git
>> >>> > rev-parse --is-inside-work-tree":
>> >>> >
>> >>> >    if worktree=$(git rev-parse --is-inside-work-tree 2>/dev/null)
>> >>> >    then
>> >>> >        if test "$worktree" = true
>> >>> >        then
>> >>> >            echo 'inside work tree'
>> >>> >        else
>> >>> >            echo 'in repository, but not in work tree'
>> >>> >        fi
>> >>> >    else
>> >>> >        echo 'not in repository'
>> >>> >    fi
>> >>> > --
Previous: John Keeping
Message 9 of 9 in “Git 1.8.4.2: 'git-rev-parse --is-inside-git-dir' wrong output!”
  1. Ville WalverantaNov 1, 2013
  2. Øystein WalleNov 2, 2013
  3. John KeepingNov 2, 2013
  4. Philip OakleyNov 2, 2013
  5. John KeepingNov 2, 2013
  6. Philip OakleyNov 2, 2013
  7. Ville WalverantaNov 2, 2013
  8. John KeepingNov 2, 2013
  9. Ville WalverantaNov 2, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.