From: "Philippe Blain via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Philippe Blain <levraiphilippeblain@gmail.com>
Subject: [PATCH 0/4] checkout/reset/read-tree: fix --recurse-submodules in linked worktree
Date: Fri, 17 Jan 2020 12:23:25 +0000 [thread overview]
Message-ID: <pull.523.git.1579263809.gitgitgadget@gmail.com> (raw)
This series fixes the behaviour of git checkout/reset/read-tree
--recurse-submodules when they are called in a linked worktree (created by
git worktree add).
Although submodules are cloned in $GIT_COMMON_DIR/worktrees/<name>/modules
upon issuing git submodule update in the linked worktree, any invocation of
git checkout/reset/read-tree --recurse-submodules that changes the state of
the submodule(s) will incorrectly operate on the repositories of the
submodules in the main worktree, i.e. the ones at $GIT_COMMON_DIR/modules/.
The fourth patch fixes this behaviour by using get_git_dir() instead of
git_common_dir() in submodule.c::submodule_move_head and
submodule.c::submodule_unset_core_worktree to construct the path to the
submodule repository.
The first 3 patches are clean-up patches on t7410-submodule-checkout-to.sh
(renamed to t2405-worktree-submodule.sh) to bring it up to date.
Note: in the second test added in the fourth patch I used test_might_fail
such that when the test is run on the current master, only the last test_cmp
makes the test fail. If we want to be more strict I'll change that to :
diff --git a/t/t2405-worktree-submodule.sh b/t/t2405-worktree-submodule.sh
index eba17d9e35..31d156cce7 100755
--- a/t/t2405-worktree-submodule.sh
+++ b/t/t2405-worktree-submodule.sh
@@ -70,9 +70,9 @@ test_expect_success 'checkout --recurse-submodules uses $GIT_DIR for submodules
test_expect_success 'core.worktree is removed in $GIT_DIR/modules/<name>/config, not in $GIT_COMMON_DIR/modules/<name>/config' '
git -C main/sub config --get core.worktree > expect &&
git -C checkout-recurse checkout --recurse-submodules first &&
- test_might_fail git -C main/.git/worktrees/checkout-recurse/modules/sub config --get core.worktree > linked-config &&
+ test_expect_code 1 git -C main/.git/worktrees/checkout-recurse/modules/sub config --get core.worktree > linked-config &&
test_must_be_empty linked-config &&
- test_might_fail git -C main/sub config --get core.worktree > actual &&
+ git -C main/sub config --get core.worktree > actual &&
test_cmp expect actual
'
Cc:Max Kirillov max@max630.net [max@max630.net] Brandon Williams
bwilliams.eng@gmail.com [bwilliams.eng@gmail.com] Jonathan Tan
jonathantanmy@google.com [jonathantanmy@google.com] Stefan Beller
stefanbeller@gmail.com [stefanbeller@gmail.com] Nguyễn Thái Ngọc Duy
pclouds@gmail.com [pclouds@gmail.com]
Philippe Blain (4):
t7410: rename to t2405-worktree-submodule.sh
t2405: use git -C and test_commit -C instead of subshells
t2405: clarify test descriptions and simplify test
submodule.c: use get_git_dir() instead of get_git_common_dir()
submodule.c | 6 +--
t/t2405-worktree-submodule.sh | 79 ++++++++++++++++++++++++++++++++
t/t7410-submodule-checkout-to.sh | 77 -------------------------------
3 files changed, 82 insertions(+), 80 deletions(-)
create mode 100755 t/t2405-worktree-submodule.sh
delete mode 100755 t/t7410-submodule-checkout-to.sh
base-commit: b4615e40a8125477e18490d868f7b65954372b43
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-523%2Fphil-blain%2Fcheckout-recurse-in-linked-worktree-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-523/phil-blain/checkout-recurse-in-linked-worktree-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/523
--
gitgitgadget
next reply other threads:[~2020-01-17 12:23 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-17 12:23 Philippe Blain via GitGitGadget [this message]
2020-01-17 12:23 ` [PATCH 1/4] t7410: rename to t2405-worktree-submodule.sh Philippe Blain via GitGitGadget
2020-01-17 12:23 ` [PATCH 2/4] t2405: use git -C and test_commit -C instead of subshells Philippe Blain via GitGitGadget
2020-01-17 13:45 ` Eric Sunshine
2020-01-17 20:32 ` Junio C Hamano
2020-01-18 19:50 ` Philippe Blain
2020-01-17 12:23 ` [PATCH 3/4] t2405: clarify test descriptions and simplify test Philippe Blain via GitGitGadget
2020-01-17 13:56 ` Eric Sunshine
2020-01-19 0:21 ` Philippe Blain
2020-01-19 1:41 ` Eric Sunshine
2020-01-17 12:23 ` [PATCH 4/4] submodule.c: use get_git_dir() instead of get_git_common_dir() Philippe Blain via GitGitGadget
2020-01-17 13:24 ` Derrick Stolee
2020-01-18 21:09 ` Philippe Blain
2020-01-17 13:24 ` [PATCH 0/4] checkout/reset/read-tree: fix --recurse-submodules in linked worktree Derrick Stolee
2020-01-21 15:01 ` [PATCH v2 " Philippe Blain via GitGitGadget
2020-01-21 15:01 ` [PATCH v2 1/4] t7410: rename to t2405-worktree-submodule.sh Philippe Blain via GitGitGadget
2020-01-21 15:01 ` [PATCH v2 2/4] t2405: use git -C and test_commit -C instead of subshells Philippe Blain via GitGitGadget
2020-01-21 15:01 ` [PATCH v2 3/4] t2405: clarify test descriptions and simplify test Philippe Blain via GitGitGadget
2020-01-21 15:01 ` [PATCH v2 4/4] submodule.c: use get_git_dir() instead of get_git_common_dir() Philippe Blain via GitGitGadget
2020-01-22 12:55 ` [PATCH v2 0/4] checkout/reset/read-tree: fix --recurse-submodules in linked worktree Philippe Blain
2020-01-22 22:10 ` Junio C Hamano
2020-01-22 22:25 ` Philippe Blain
2020-01-24 23:00 ` Philippe Blain
2020-01-24 23:47 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.523.git.1579263809.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@vger.kernel.org \
--cc=levraiphilippeblain@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.