Merge branch 'sb/submodule-core-worktree'
"git submodule" did not correctly adjust core.worktree setting that indicates whether/where a submodule repository has its associated working tree across various state transitions, which has been corrected. * sb/submodule-core-worktree: submodule deinit: unset core.worktree submodule: ensure core.worktree is set after update submodule: unset core.worktree if no working tree is present
This commit is contained in:
14
submodule.c
14
submodule.c
@ -1534,6 +1534,18 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
void submodule_unset_core_worktree(const struct submodule *sub)
|
||||
{
|
||||
char *config_path = xstrfmt("%s/modules/%s/config",
|
||||
get_git_common_dir(), sub->name);
|
||||
|
||||
if (git_config_set_in_file_gently(config_path, "core.worktree", NULL))
|
||||
warning(_("Could not unset core.worktree setting in submodule '%s'"),
|
||||
sub->path);
|
||||
|
||||
free(config_path);
|
||||
}
|
||||
|
||||
static const char *get_super_prefix_or_empty(void)
|
||||
{
|
||||
const char *s = get_super_prefix();
|
||||
@ -1699,6 +1711,8 @@ int submodule_move_head(const char *path,
|
||||
|
||||
if (is_empty_dir(path))
|
||||
rmdir_or_warn(path);
|
||||
|
||||
submodule_unset_core_worktree(sub);
|
||||
}
|
||||
}
|
||||
out:
|
||||
|
||||
Reference in New Issue
Block a user