diff options
| author | Junio C Hamano <gitster@pobox.com> | 2019-12-01 09:04:31 -0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2019-12-01 09:04:31 -0800 |
| commit | 05fc6471e3668f17b665ec686d5629e92df917fa (patch) | |
| tree | c7d5e2c7f5fe6f6ee2d63b149dde24a9fbc38642 | |
| parent | ecbddd16bb2c725ad2305fd911bf237d845c862b (diff) | |
| parent | 4782cf2ab686bacca8d2908319981ac27d54ca25 (diff) | |
| download | git-05fc6471e3668f17b665ec686d5629e92df917fa.tar.gz | |
Merge branch 'pb/no-recursive-reset-hard-in-worktree-add'
"git worktree add" internally calls "reset --hard" that should not
descend into submodules, even when submodule.recurse configuration
is set, but it was affected. This has been corrected.
* pb/no-recursive-reset-hard-in-worktree-add:
worktree: teach "add" to ignore submodule.recurse config
| -rw-r--r-- | builtin/worktree.c | 2 | ||||
| -rwxr-xr-x | t/t2400-worktree-add.sh | 24 |
2 files changed, 25 insertions, 1 deletions
diff --git a/builtin/worktree.c b/builtin/worktree.c index 4de44f579a..d6bc5263f1 100644 --- a/builtin/worktree.c +++ b/builtin/worktree.c @@ -376,7 +376,7 @@ static int add_worktree(const char *path, const char *refname, if (opts->checkout) { cp.argv = NULL; argv_array_clear(&cp.args); - argv_array_pushl(&cp.args, "reset", "--hard", NULL); + argv_array_pushl(&cp.args, "reset", "--hard", "--no-recurse-submodules", NULL); if (opts->quiet) argv_array_push(&cp.args, "--quiet"); cp.env = child_env.argv; diff --git a/t/t2400-worktree-add.sh b/t/t2400-worktree-add.sh index e819ba741e..8a9831413c 100755 --- a/t/t2400-worktree-add.sh +++ b/t/t2400-worktree-add.sh @@ -587,4 +587,28 @@ test_expect_success '"add" should not fail because of another bad worktree' ' ) ' +test_expect_success '"add" with uninitialized submodule, with submodule.recurse unset' ' + test_create_repo submodule && + test_commit -C submodule first && + test_create_repo project && + git -C project submodule add ../submodule && + git -C project add submodule && + test_tick && + git -C project commit -m add_sub && + git clone project project-clone && + git -C project-clone worktree add ../project-2 +' +test_expect_success '"add" with uninitialized submodule, with submodule.recurse set' ' + git -C project-clone -c submodule.recurse worktree add ../project-3 +' + +test_expect_success '"add" with initialized submodule, with submodule.recurse unset' ' + git -C project-clone submodule update --init && + git -C project-clone worktree add ../project-4 +' + +test_expect_success '"add" with initialized submodule, with submodule.recurse set' ' + git -C project-clone -c submodule.recurse worktree add ../project-5 +' + test_done |
