diff --git a/gvfs.c b/gvfs.c index c65f15ff02584a..a017bf84c737dd 100644 --- a/gvfs.c +++ b/gvfs.c @@ -19,9 +19,6 @@ static int early_core_gvfs_config(const char *var, const char *value, void gvfs_load_config_value(const char *value) { - if (gvfs_config_loaded) - return; - if (value) { struct key_value_info default_kvi = KVI_INIT; core_gvfs = git_config_bool_or_int("core.gvfs", value, &default_kvi, &core_gvfs_is_bool); @@ -34,12 +31,13 @@ void gvfs_load_config_value(const char *value) /* Turn on all bits if a bool was set in the settings */ if (core_gvfs_is_bool && core_gvfs) core_gvfs = -1; - - gvfs_config_loaded = 1; } int gvfs_config_is_set(int mask) { - gvfs_load_config_value(NULL); + if (!gvfs_config_loaded) + gvfs_load_config_value(NULL); + + gvfs_config_loaded = 1; return (core_gvfs & mask) == mask; } diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh index e7eccfaccb9a36..110c741ba71935 100755 --- a/t/t0021-conversion.sh +++ b/t/t0021-conversion.sh @@ -349,6 +349,10 @@ test_expect_success "filter: smudge filters blocked when under GVFS" ' test_config filter.empty-in-repo.smudge "echo smudged && cat" && test_config core.gvfs 64 && + test_must_fail git checkout && + + # ensure the local core.gvfs setting overwrites the global setting + git config --global core.gvfs false && test_must_fail git checkout '