Browse Source

rebase: do not attempt to remove startup_info->original_cwd

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.

Acked-by: Derrick Stolee <stolee@gmail.com>
Acked-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Elijah Newren 3 years ago committed by Junio C Hamano
parent
commit
bc3ae46b42
  1. 2
      sequencer.c
  2. 4
      t/t2501-cwd-empty.sh

2
sequencer.c

@ -4228,6 +4228,8 @@ static int run_git_checkout(struct repository *r, struct replay_opts *opts, @@ -4228,6 +4228,8 @@ static int run_git_checkout(struct repository *r, struct replay_opts *opts,

cmd.git_cmd = 1;

if (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);

4
t/t2501-cwd-empty.sh

@ -166,11 +166,11 @@ test_expect_success 'cherry-pick fails if cwd needs to be removed' ' @@ -166,11 +166,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' '

Loading…
Cancel
Save