Message ID | f06f9291b7c357422abad9f9cdd7425ef9e22509.1579275102.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | config: allow user to know scope of config options | expand |
"Matthew Rogers via GitGitGadget" <gitgitgadget@gmail.com> writes: > diff --git a/config.h b/config.h > index 91fd4c5e96..284d92fb0e 100644 > --- a/config.h > +++ b/config.h > @@ -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, > }; So the gist of the change is to split REPO into two, LOCAL and WORKTREE. If we can find a way to state that concisely, perhaps we can improve "refine enum" and make it more informative. > diff --git a/t/helper/test-config.c b/t/helper/test-config.c > index 214003d5b2..6695e463eb 100644 > --- a/t/helper/test-config.c > +++ b/t/helper/test-config.c > @@ -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: > diff --git a/t/t1308-config-set.sh b/t/t1308-config-set.sh > index 7b4e1a63eb..535b2a73f7 100755 > --- a/t/t1308-config-set.sh > +++ b/t/t1308-config-set.sh > @@ -265,7 +265,7 @@ test_expect_success 'iteration shows correct origins' ' > value=from-cmdline > origin=command line > name= > - scope=cmdline > + scope=command Why??? > EOF > GIT_CONFIG_PARAMETERS=$cmdline_config test-tool config iterate >actual && > test_cmp expect actual > diff --git a/upload-pack.c b/upload-pack.c > index a00d7ece6b..c53249cac1 100644 > --- a/upload-pack.c > +++ b/upload-pack.c > @@ -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); > }
> So the gist of the change is to split REPO into two, LOCAL and > WORKTREE. > > If we can find a way to state that concisely, perhaps we can improve > "refine enum" and make it more informative. > Should I just say "split repo scope" Or is that too on the nose? > > diff --git a/t/helper/test-config.c b/t/helper/test-config.c > > index 214003d5b2..6695e463eb 100644 > > --- a/t/helper/test-config.c > > +++ b/t/helper/test-config.c > > @@ -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: > > diff --git a/t/t1308-config-set.sh b/t/t1308-config-set.sh > > index 7b4e1a63eb..535b2a73f7 100755 > > --- a/t/t1308-config-set.sh > > +++ b/t/t1308-config-set.sh > > @@ -265,7 +265,7 @@ test_expect_success 'iteration shows correct origins' ' > > value=from-cmdline > > origin=command line > > name= > > - scope=cmdline > > + scope=command > > Why??? I meant to put this change into the next series in the patch, but I must have messed up, so I'll readjust that.
Matt Rogers <mattr94@gmail.com> writes: >> So the gist of the change is to split REPO into two, LOCAL and >> WORKTREE. >> >> If we can find a way to state that concisely, perhaps we can improve >> "refine enum" and make it more informative. >> > > Should I just say "split repo scope" Or is that too on the nose? Yeah, I think phrasing along that line would work well. config: split repo scope to local and worktree That's 46 chars.
diff --git a/config.c b/config.c index d75f88ca0c..447a013a15 100644 --- a/config.c +++ b/config.c @@ -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)) diff --git a/config.h b/config.h index 91fd4c5e96..284d92fb0e 100644 --- a/config.h +++ b/config.h @@ -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, }; diff --git a/remote.c b/remote.c index 5c4666b53a..593ce297ed 100644 --- a/remote.c +++ b/remote.c @@ -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); diff --git a/t/helper/test-config.c b/t/helper/test-config.c index 214003d5b2..6695e463eb 100644 --- a/t/helper/test-config.c +++ b/t/helper/test-config.c @@ -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: diff --git a/t/t1308-config-set.sh b/t/t1308-config-set.sh index 7b4e1a63eb..535b2a73f7 100755 --- a/t/t1308-config-set.sh +++ b/t/t1308-config-set.sh @@ -265,7 +265,7 @@ test_expect_success 'iteration shows correct origins' ' value=from-cmdline origin=command line name= - scope=cmdline + scope=command EOF GIT_CONFIG_PARAMETERS=$cmdline_config test-tool config iterate >actual && test_cmp expect actual diff --git a/upload-pack.c b/upload-pack.c index a00d7ece6b..c53249cac1 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -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); }