Hi, On Wed, 8 Mar 2017, Junio C Hamano wrote: > Jeff King <peff@xxxxxxxx> writes: > > >> 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: ... or like testing the early config directly? > > $ 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. > > Yeah, I agree with that as one of the worthy goals. IIUC, we > decided to leave that outside of this series and later fix on top, > which is fine by me, too. How about this on top, then: -- snipsnap -- From: Johannes Schindelin <johannes.schindelin@xxxxxx> Subject: [PATCH] t1309: document cases where we would want early config not to die() Jeff King came up with a couple examples that demonstrate how the new read_early_config() that looks harder for the current .git/ directory could die() in an undesirable way. Let's add those cases to the test script, to document what we would like to happen when early config encounters problems. Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- t/t1309-early-config.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/t/t1309-early-config.sh b/t/t1309-early-config.sh index 0c55dee514c..027eca63a3c 100755 --- a/t/t1309-early-config.sh +++ b/t/t1309-early-config.sh @@ -47,4 +47,29 @@ test_expect_success 'ceiling #2' ' test xdg = "$(cat output)" ' +test_with_config () +{ + rm -rf throwaway && + git init throwaway && + ( + cd throwaway && + echo "$*" >.git/config && + test-config read_early_config early.config + ) +} + +test_expect_success 'ignore .git/ with incompatible repository version' ' + test_with_config "[core]repositoryformatversion = 999999" 2>err && + grep "warning:.* Expected git repo version <= [1-9]" err +' + +test_expect_failure 'ignore .git/ with invalid repository version' ' + test_with_config "[core]repositoryformatversion = invalid" +' + + +test_expect_failure 'ignore .git/ with invalid config' ' + test_with_config "[" +' + test_done -- 2.12.0.windows.1.7.g94dafc3b124