]> git.ipfire.org Git - thirdparty/git.git/commit - t/t1515-rev-parse-outside-repo.sh
rev-parse: let some options run outside repository
authorJeff King <peff@peff.net>
Mon, 29 Feb 2016 11:01:56 +0000 (06:01 -0500)
committerJunio C Hamano <gitster@pobox.com>
Mon, 29 Feb 2016 17:24:47 +0000 (09:24 -0800)
commitfc7d47f0dd4f041af2ed2004700f18b635f3b204
treed41e5fcb4f10c3e12497dea3940ac33234abcd23
parenta4e21fb4dc0ee1783b94be78fd91b73df18992f3
rev-parse: let some options run outside repository

Once upon a time, you could use "--local-env-vars" and
"--resolve-git-dir" outside of any git repository, but they
had to come first on the command line. Commit 68889b4
(rev-parse: remove restrictions on some options, 2013-07-21)
put them into the normal option-parsing loop, fixing the
latter. But it inadvertently broke the former, as we call
setup_git_directory() before starting that loop.

We can note that those options don't care even conditionally
about whether we are in a git repo. So it's fine if we
simply wait to setup the repo until we see an option that
needs it.

However, there is one special exception we should make:
historically, rev-parse will set up the repository and read
config even if there are _no_ options. Some of the
tests in t1300 rely on this to check "git -c $config"
parsing. That's not mirroring real-world use, and we could
tweak the test.  But t0002 uses a bare "git rev-parse" to
check "are we in a git repository?". It's plausible that
real-world scripts are relying on this.

So let's cover this case specially, and treat an option-less
"rev-parse" as "see if we're in a repo".

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/rev-parse.c
t/t1515-rev-parse-outside-repo.sh