@@ -1724,15 +1724,12 @@ static int do_git_config_sequence(const struct config_options *opts,
if (user_config && !access_or_die(user_config, R_OK, ACCESS_EACCES_OK))
ret += git_config_from_file(fn, user_config, data);
- current_parsing_scope = CONFIG_SCOPE_REPO;
+ current_parsing_scope = CONFIG_SCOPE_LOCAL;
if (!opts->ignore_repo && repo_config &&
!access_or_die(repo_config, R_OK, 0))
ret += git_config_from_file(fn, repo_config, data);
- /*
- * Note: this should have a new scope, CONFIG_SCOPE_WORKTREE.
- * But let's not complicate things before it's actually needed.
- */
+ current_parsing_scope = CONFIG_SCOPE_WORKTREE;
if (!opts->ignore_worktree && repository_format_worktree_config) {
char *path = git_pathdup("config.worktree");
if (!access_or_die(path, R_OK, 0))
@@ -298,7 +298,8 @@ enum config_scope {
CONFIG_SCOPE_UNKNOWN = 0,
CONFIG_SCOPE_SYSTEM,
CONFIG_SCOPE_GLOBAL,
- CONFIG_SCOPE_REPO,
+ CONFIG_SCOPE_LOCAL,
+ CONFIG_SCOPE_WORKTREE,
CONFIG_SCOPE_CMDLINE,
};
@@ -369,7 +369,8 @@ static int handle_config(const char *key, const char *value, void *cb)
}
remote = make_remote(name, namelen);
remote->origin = REMOTE_CONFIG;
- if (current_config_scope() == CONFIG_SCOPE_REPO)
+ if (current_config_scope() == CONFIG_SCOPE_LOCAL ||
+ current_config_scope() == CONFIG_SCOPE_WORKTREE)
remote->configured_in_repo = 1;
if (!strcmp(subkey, "mirror"))
remote->mirror = git_config_bool(key, value);
@@ -44,8 +44,10 @@ static const char *scope_name(enum config_scope scope)
return "system";
case CONFIG_SCOPE_GLOBAL:
return "global";
- case CONFIG_SCOPE_REPO:
+ case CONFIG_SCOPE_LOCAL:
return "repo";
+ case CONFIG_SCOPE_WORKTREE:
+ return "worktree";
case CONFIG_SCOPE_CMDLINE:
return "cmdline";
default:
@@ -259,7 +259,7 @@ test_expect_success 'iteration shows correct origins' '
value=from-repo
origin=file
name=.git/config
- scope=repo
+ scope=local
key=foo.bar
value=from-cmdline
@@ -1073,7 +1073,8 @@ static int upload_pack_config(const char *var, const char *value, void *unused)
precomposed_unicode = git_config_bool(var, value);
}
- if (current_config_scope() != CONFIG_SCOPE_REPO) {
+ if (current_config_scope() != CONFIG_SCOPE_LOCAL &&
+ current_config_scope() != CONFIG_SCOPE_WORKTREE) {
if (!strcmp("uploadpack.packobjectshook", var))
return git_config_string(&pack_objects_hook, var, value);
}