Jonathan Nieder <jrnieder@xxxxxxxxx> writes: > It is late in the release cycle, so revert the whole 3-patch series. > We can try again later for 2.20. > > Reported-by: Allan Sandfeld Jensen <allan.jensen@xxxxx> > Helped-by: Stefan Beller <sbeller@xxxxxxxxxx> > Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> > --- > Stefan Beller wrote: >> Jonathan Nieder wrote: > >>> I think we >>> should revert e98317508c0 in "master" (for 2.19) and keep making use >>> of that 'second try' in "next" (for 2.20). >> >> Actually I'd rather revert the whole topic leading up to >> 7e25437d35a (Merge branch 'sb/submodule-core-worktree', 2018-07-18) >> as the last patch in there doesn't work well without e98317508c0 IIRC. >> >> And having only the first patch would bring an inconsistent state as >> then different commands behave differently w.r.t. setting core.worktree. > > Like this (generated using "git revert -m1)? OK. Thanks for taking care of it. > > builtin/submodule--helper.c | 26 -------------------------- > git-submodule.sh | 5 ----- > submodule.c | 14 -------------- > submodule.h | 2 -- > t/lib-submodule-update.sh | 5 ++--- > t/t7400-submodule-basic.sh | 5 ----- > 6 files changed, 2 insertions(+), 55 deletions(-) > > diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c > index b56028ba9d..f6fb8991f3 100644 > --- a/builtin/submodule--helper.c > +++ b/builtin/submodule--helper.c > @@ -1123,8 +1123,6 @@ static void deinit_submodule(const char *path, const char *prefix, > if (!(flags & OPT_QUIET)) > printf(format, displaypath); > > - submodule_unset_core_worktree(sub); > - > strbuf_release(&sb_rm); > } > > @@ -2005,29 +2003,6 @@ static int check_name(int argc, const char **argv, const char *prefix) > return 0; > } > > -static int connect_gitdir_workingtree(int argc, const char **argv, const char *prefix) > -{ > - struct strbuf sb = STRBUF_INIT; > - const char *name, *path; > - char *sm_gitdir; > - > - if (argc != 3) > - BUG("submodule--helper connect-gitdir-workingtree <name> <path>"); > - > - name = argv[1]; > - path = argv[2]; > - > - strbuf_addf(&sb, "%s/modules/%s", get_git_dir(), name); > - sm_gitdir = absolute_pathdup(sb.buf); > - > - connect_work_tree_and_git_dir(path, sm_gitdir, 0); > - > - strbuf_release(&sb); > - free(sm_gitdir); > - > - return 0; > -} > - > #define SUPPORT_SUPER_PREFIX (1<<0) > > struct cmd_struct { > @@ -2041,7 +2016,6 @@ static struct cmd_struct commands[] = { > {"name", module_name, 0}, > {"clone", module_clone, 0}, > {"update-clone", update_clone, 0}, > - {"connect-gitdir-workingtree", connect_gitdir_workingtree, 0}, > {"relative-path", resolve_relative_path, 0}, > {"resolve-relative-url", resolve_relative_url, 0}, > {"resolve-relative-url-test", resolve_relative_url_test, 0}, > diff --git a/git-submodule.sh b/git-submodule.sh > index f7fd80345c..1cb2c0a31b 100755 > --- a/git-submodule.sh > +++ b/git-submodule.sh > @@ -580,11 +580,6 @@ cmd_update() > die "$(eval_gettext "Unable to find current \${remote_name}/\${branch} revision in submodule path '\$sm_path'")" > fi > > - if ! $(git config -f "$(git rev-parse --git-common-dir)/modules/$name/config" core.worktree) 2>/dev/null > - then > - git submodule--helper connect-gitdir-workingtree "$name" "$sm_path" > - fi > - > if test "$subsha1" != "$sha1" || test -n "$force" > then > subforce=$force > diff --git a/submodule.c b/submodule.c > index 50cbf5f13e..a2b266fbfa 100644 > --- a/submodule.c > +++ b/submodule.c > @@ -1534,18 +1534,6 @@ int bad_to_remove_submodule(const char *path, unsigned flags) > 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(); > @@ -1711,8 +1699,6 @@ int submodule_move_head(const char *path, > > if (is_empty_dir(path)) > rmdir_or_warn(path); > - > - submodule_unset_core_worktree(sub); > } > } > out: > diff --git a/submodule.h b/submodule.h > index 7d476cefa7..e452919aa4 100644 > --- a/submodule.h > +++ b/submodule.h > @@ -127,8 +127,6 @@ int submodule_move_head(const char *path, > const char *new_head, > unsigned flags); > > -void submodule_unset_core_worktree(const struct submodule *sub); > - > /* > * Prepare the "env_array" parameter of a "struct child_process" for executing > * a submodule by clearing any repo-specific environment variables, but > diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh > index 5b56b23166..016391723c 100755 > --- a/t/lib-submodule-update.sh > +++ b/t/lib-submodule-update.sh > @@ -235,7 +235,7 @@ reset_work_tree_to_interested () { > then > mkdir -p submodule_update/.git/modules/sub1/modules && > cp -r submodule_update_repo/.git/modules/sub1/modules/sub2 submodule_update/.git/modules/sub1/modules/sub2 > - # core.worktree is unset for sub2 as it is not checked out > + GIT_WORK_TREE=. git -C submodule_update/.git/modules/sub1/modules/sub2 config --unset core.worktree > fi && > # indicate we are interested in the submodule: > git -C submodule_update config submodule.sub1.url "bogus" && > @@ -709,8 +709,7 @@ test_submodule_recursing_with_args_common() { > git branch -t remove_sub1 origin/remove_sub1 && > $command remove_sub1 && > test_superproject_content origin/remove_sub1 && > - ! test -e sub1 && > - test_must_fail git config -f .git/modules/sub1/config core.worktree > + ! test -e sub1 > ) > ' > # ... absorbing a .git directory along the way. > diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh > index 7d3d984210..c0ffc1022a 100755 > --- a/t/t7400-submodule-basic.sh > +++ b/t/t7400-submodule-basic.sh > @@ -984,11 +984,6 @@ test_expect_success 'submodule deinit should remove the whole submodule section > rmdir init > ' > > -test_expect_success 'submodule deinit should unset core.worktree' ' > - test_path_is_file .git/modules/example/config && > - test_must_fail git config -f .git/modules/example/config core.worktree > -' > - > test_expect_success 'submodule deinit from subdirectory' ' > git submodule update --init && > git config submodule.example.foo bar &&