From: John Keeping <john@keeping.me.uk>
To: Jeff King <peff@peff.net>
Cc: "Elliott Cable" <me@ell.io>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
git@vger.kernel.org
Subject: Re: `git rev-parse --is-inside-work-tree` and $GIT_WORK_TREE
Date: Tue, 29 Mar 2016 21:52:08 +0100 [thread overview]
Message-ID: <20160329205208.GF1578@serenity.lan> (raw)
In-Reply-To: <20160329203425.GA24027@sigill.intra.peff.net>
On Tue, Mar 29, 2016 at 04:34:25PM -0400, Jeff King wrote:
> On Tue, Mar 29, 2016 at 06:42:44AM -0500, Elliott Cable wrote:
>
> > So, I find this behaviour a little strange; I can't determine if it's
> > a subtle bug, or intentionally undefined/‘fuzzy’ behaviour:
> >
> > $ cd a-repo/.git/
> > $ pwd
> > /path/to/a-repo/.git
> > $ git rev-parse --is-inside-work-tree
> > false
> > $ export GIT_WORK_TREE=/path/to/a-repo
> > $ git rev-parse --is-inside-work-tree
> > true
> >
> > i.e. when within the repository (the `.git` directory), and when that
> > directory is a sub-directory of the working-tree, `rev-parse
> > --is-inside-work-tree` reports *false* (reasonable enough, I suppose);
> > but then if `$GIT_WORK_TREE` is set to precisely the directory that
> > git was *already* assuming was the working-directory, then the same
> > command, in the same location, reports *true*.
> >
> > This should probably be made consistent: either `rev-parse
> > --is-inside-work-tree` should report “true”, even inside the `.git`
> > dir, as long as that directory is a sub-directory of the working-tree
> > … or repository-directories / `$GIT_DIR` / `.git` directories should
> > be excluded from truthy responses to `rev-parse
> > --is-inside-work-tree`.
>
> Yeah, I think this is a bug. Presumably what is happening is that we are
> too eager to "cd $GIT_WORK_TREE" inside git-rev-parse, and by the time
> we ask "are we in a work tree", the answer has become yes. But the
> caller really wants to know "am _I_ inside the work tree".
I don't think that's what's happening. Try:
$ cd .git/
$ GIT_WORK_TREE=.. git rev-parse --is-inside-work-tree
true
so I think it's that we refuse to assume that the directory above a Git
directory is a working tree (something similar happens when the
"core.worktree" config variable is set). I'm not convinced that's
unreasonable.
However, the case above also gives:
$ GIT_WORK_TREE=.. git rev-parse --is-inside-git-dir
false
$ test $(pwd) = $(GIT_WORK_TREE=.. git rev-parse --git-dir); echo $?
0
so even though $PWD *is* the Git directory, we're not in the Git
directory! Setting GIT_DIR=$(pwd) makes no different to that.
next prev parent reply other threads:[~2016-03-29 20:52 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-29 11:42 `git rev-parse --is-inside-work-tree` and $GIT_WORK_TREE Elliott Cable
2016-03-29 11:53 ` Elliott Cable
2016-03-29 12:33 ` John Keeping
2016-03-29 15:08 ` Junio C Hamano
2016-03-29 19:41 ` Jeff King
2016-03-29 19:56 ` Junio C Hamano
2016-03-29 20:26 ` Jeff King
2016-03-29 20:34 ` Jeff King
2016-03-29 20:52 ` John Keeping [this message]
2016-03-29 21:21 ` Jeff King
2016-03-29 22:00 ` John Keeping
2016-03-29 22:14 ` John Keeping
2016-03-29 22:16 ` Jeff King
2016-03-29 22:35 ` Junio C Hamano
2016-03-30 0:53 ` Duy Nguyen
2016-04-01 0:49 ` Elliott Cable
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160329205208.GF1578@serenity.lan \
--to=john@keeping.me.uk \
--cc=git@vger.kernel.org \
--cc=me@ell.io \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.