Re: [PATCH v3 0/9] Fix the early config
- From
Jeff King <peff@peff.net>
- Date
- Mar 8, 2017, 17:42 UTC
- Message-ID
- <20170308174237.cm6e5uvve6hu7lpf@sigill.intra.peff.net>
- In-Reply-To
- <xmqqy3wf3dbo.fsf@gitster.mtv.corp.google.com>
On Wed, Mar 08, 2017 at 09:09:31AM -0800, Junio C Hamano wrote:
Show 16 quoted lines
> Jeff King <peff@peff.net> writes: > > > Good catch. Another "non-gentle" thing I noticed here while looking at > > another thread: the repository-format version check uses the config > > parser, which will die() in certain circumstances. So for instance: > > > > $ git init > > $ git rev-parse && echo ok > > ok > > > > $ echo '[core]repositoryformatversion = 10' >.git/config > > $ git rev-parse && echo ok > > fatal: Expected git repo version <= 1, found 10 > > Just to set my expectation straight. Do you expect/wish this not to > fail because of this in cmd_rev_parse()?
No, I was just using "rev-parse" as a sample command that tried to do repo setup. I meant the above snippet that you quoted to both be fine and expected outputs. The problem is the _other_ two cases where the config code dies before we even get to the version-number check.
Show 5 quoted lines
> Or are you discussing a more general issue, iow, anything that can > work without repository (i.e. those who do _gently version of the > setup and act on *nongit_ok) should pretend as if there were no > (broken) repository and take the "no we are not in a repository" > codepath?
Yes, exactly. It would have been less confusing if I picked something that passed nongit_ok. Like hash-object:
$ git init $ echo content >file $ git hash-object file d95f3ad14dee633a758d2e331151e950dd13e4ed
$ echo '[core]repositoryformatversion = 10' >.git/config $ git hash-object file warning: Expected git repo version <= 1, found 10 d95f3ad14dee633a758d2e331151e950dd13e4ed
The warning is fine and reasonable here. But then:
$ echo '[core]repositoryformatversion = foobar' >.git/config $ git hash-object file fatal: bad numeric config value 'foobar' for 'core.repositoryformatversion' in file .git/config: invalid unit
That's wrong. We're supposed to be gentle. And ditto:
$ echo '[co' >.git/config $ git hash-object file fatal: bad config line 1 in file .git/config
Those last two should issue a warning at most, and then let the command continue.
-Peff