Subject: [PATCH] update worktree in config.worktree if it exists

From: "haihuayang via GitGitGadget" <[email-masked]>
Date: Thu, 28 Aug 2025 16:12:19 +0000

From: Haihua Yang <[email-masked]>

When updating submodule core.worktree configuration
- If config.worktree exists in the submodule's gitdir, write to that file
- Otherwise, write to the commondir/config file

Signed-off-by: Haihua Yang <[email-masked]>

Signed-off-by: Haihua Yang <[email-masked]>
---
    update worktree in config.worktree if it exists
    
    When updating submodule core.worktree configuration
    
     * If config.worktree exists in the submodule's gitdir, write to that
       file
     * Otherwise, write to the commondir/config file

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2035%2Fhaihuayang%2Fmaster-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2035/haihuayang/master-v1
Pull-Request: https://github.com/git/git/pull/2035

 builtin/submodule--helper.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 07a1935cbe..231c70f12e 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -2519,7 +2519,12 @@ static int ensure_core_worktree(const char *path)
 		const char *rel_path;
 		struct strbuf sb = STRBUF_INIT;
 
-		cfg_file = repo_git_path(&subrepo, "config");
+		/* Use config.worktree if it exists, otherwise use config */
+		cfg_file = repo_git_path(&subrepo, "config.worktree");
+		if (access(cfg_file, F_OK) != 0) {
+			free(cfg_file);
+			cfg_file = repo_git_path(&subrepo, "config");
+		}
 
 		abs_path = absolute_pathdup(path);
 		rel_path = relative_path(abs_path, subrepo.gitdir, &sb);

base-commit: 1fa68948c3d76328236cac73d2adf33c905bd8e3
-- 
gitgitgadget