Re: Git 1.8.4.2: 'git-rev-parse --is-inside-git-dir' wrong output!
- From
John Keeping <john@keeping.me.uk>
- Date
- Nov 2, 2013, 20:20 UTC
- Message-ID
- <20131102202041.GF24023@serenity.lan>
- In-Reply-To
- <CACbqpSspsUvw3QXnSmOXA2boenh3y4DjHO-813OTna7cpSXkZQ@mail.gmail.com>
On Sat, Nov 02, 2013 at 02:42:04PM -0500, Ville Walveranta wrote:
Show 8 quoted lines
> 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)
Show 35 quoted lines
> 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 > >>> > --