[PATCH v3 07/11] rebase: do not attempt to remove startup_info->original_cwd
- From
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Nov 26, 2021, 22:40 UTC
- Message-ID
- <39b1f3a225ec74a79320503eff04ba47ae4259fd.1637966463.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1140.v3.git.git.1637966463.gitgitgadget@gmail.com>
From: Elijah Newren <newren@gmail.com>
Since rebase spawns a `checkout` subprocess, make sure we run that from the startup_info->original_cwd directory, so that the checkout process knows to protect that directory.
Signed-off-by: Elijah Newren <newren@gmail.com> --- sequencer.c | 3 +++ t/t2501-cwd-empty.sh | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/sequencer.c b/sequencer.c index ea96837cde3..b71f7b8a0a6 100644 --- a/sequencer.c +++ b/sequencer.c @@ -4228,6 +4228,9 @@ static int run_git_checkout(struct repository *r, struct replay_opts *opts, cmd.git_cmd = 1; + if (startup_info->original_cwd && + !is_absolute_path(startup_info->original_cwd)) + cmd.dir = startup_info->original_cwd; strvec_push(&cmd.args, "checkout"); strvec_push(&cmd.args, commit); strvec_pushf(&cmd.env_array, GIT_REFLOG_ACTION "=%s", action); diff --git a/t/t2501-cwd-empty.sh b/t/t2501-cwd-empty.sh index be04b673f6a..acf9646ec6e 100755 --- a/t/t2501-cwd-empty.sh +++ b/t/t2501-cwd-empty.sh @@ -159,11 +159,11 @@ test_expect_success 'cherry-pick fails if cwd needs to be removed' ' ' test_expect_success 'rebase does not clean cwd incidentally' ' - test_incidental_dir_removal failure git rebase reverted + test_incidental_dir_removal success git rebase reverted ' test_expect_success 'rebase fails if cwd needs to be removed' ' - test_required_dir_removal failure git rebase fd_conflict + test_required_dir_removal success git rebase fd_conflict ' test_expect_success 'revert does not clean cwd incidentally' '
-- gitgitgadget