Merge branch 'jk/missing-config'
authorJunio C Hamano <gitster@pobox.com>
Wed, 17 Nov 2010 23:02:08 +0000 (15:02 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 17 Nov 2010 23:02:08 +0000 (15:02 -0800)
* jk/missing-config:
config: treat non-existent config files as empty

config.c
t/t1300-repo-config.sh
index 4b0a82040e7982ab936ed52b2bb3405bc85b80f8..c63d6834e087bbe2469cb285d3b3de475b76b972 100644 (file)
--- a/config.c
+++ b/config.c
@@ -871,9 +871,7 @@ int git_config(config_fn_t fn, void *data)
        if (config_parameters)
                found += 1;
 
-       if (found == 0)
-               return -1;
-       return ret;
+       return ret == 0 ? found : ret;
 }
 
 /*
index d0ab8ffe1b91a7fa37dfc7939cb3d5ae2c3cc100..d0e55465ff08698376f5d9fa86357d51bd57458c 100755 (executable)
@@ -288,6 +288,14 @@ EOF
 test_expect_success 'working --list' \
        'git config --list > output && cmp output expect'
 
+cat > expect << EOF
+EOF
+
+test_expect_success '--list without repo produces empty output' '
+       git --git-dir=nonexistent config --list >output &&
+       test_cmp expect output
+'
+
 cat > expect << EOF
 beta.noindent sillyValue
 nextsection.nonewline wow2 for me
@@ -836,6 +844,27 @@ test_expect_success SYMLINKS 'symlinked configuration' '
 
 '
 
+test_expect_success 'nonexistent configuration' '
+       (
+               GIT_CONFIG=doesnotexist &&
+               export GIT_CONFIG &&
+               test_must_fail git config --list &&
+               test_must_fail git config test.xyzzy
+       )
+'
+
+test_expect_success SYMLINKS 'symlink to nonexistent configuration' '
+       ln -s doesnotexist linktonada &&
+       ln -s linktonada linktolinktonada &&
+       (
+               GIT_CONFIG=linktonada &&
+               export GIT_CONFIG &&
+               test_must_fail git config --list &&
+               GIT_CONFIG=linktolinktonada &&
+               test_must_fail git config --list
+       )
+'
+
 test_expect_success 'check split_cmdline return' "
        git config alias.split-cmdline-fix 'echo \"' &&
        test_must_fail git split-cmdline-fix &&