Re: [PATCH] Provide config option to expect files outside sparse patterns
From: Derrick Stolee <hidden>
Date: 2022-02-22 13:47:41
On 2/21/2022 9:23 PM, Elijah Newren wrote:
On Mon, Feb 21, 2022 at 12:34 PM Johannes Schindelin [off-list ref] wrote:quoted
Hi Elijah, In addition to Stolee's feedback... On Sun, 20 Feb 2022, Elijah Newren via GitGitGadget wrote:quoted
diff --git a/config.c b/config.c index 2bffa8d4a01..68e877a1d80 100644 --- a/config.c +++ b/config.c@@ -1520,6 +1520,11 @@ static int git_default_core_config(const char *var, const char *value, void *cb) return 0; } + if (!strcmp(var, "core.expectfilesoutsidesparsepatterns")) { + core_expect_files_outside_sparse_patterns = git_config_bool(var, value); + return 0; + }The `core` section is already quite crowded (for which I am partially responsible, of course). Maybe it would be a good idea to introduce the `sparse` section, using `sparse.allowFilesMatchingPatterns` or `sparse.applyPatternsToWorktree = false`?That's a fair point. At one point Stolee wanted to change from core.sparse* to sparse.* -- but by that point we already had users and would have had to deal with a bit of a migration story (and wondering what to do if people had both old and new config variables set inconsistently). I'm not sure if it's optimal to try to keep the sparse settings together (thus put new ones under core), or try to avoid filling core. I guess if we moved towards sparse.* now, it might be an easier migration story if we only have two options to move. And besides, we're already split between multiple sections with extensions.worktreeConfig, core.sparseCheckout{,Cone}, and index.sparse already...so maybe adding one more section would be par for the course. ;-) So, I'm leaning towards sparse.expectFilesOutsideOfPatterns, but I'd like to hear Stolee's thoughts too.
This has been an interesting discussion. I think that the existence of core.sparseCheckout[Cone] isn't a good reason to keep adding to the core.* namespace. Creating a sparse.* namespace is a good idea. I doubt this will be the last time we want a config option for some behavior custom to sparse-checkouts (or virtual environments). I agree that migrating core.sparseCheckout[Cone] to the sparse.* namespace would need to be done carefully. In particular, we would probably need to _always_ understand the core.* versions, but start to prefer the sparse.* versions if there is a conflict. This work could be delayed indefinitely, or could be offered as a project for a new contributor (if we experienced contributors could agree on a clear path to make this transition). Thanks, -Stolee