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:
Junio C Hamano
2018-07-18 12:20:28 -07:00
6 changed files with 55 additions and 2 deletions

View File

@ -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: