зеркало из https://github.com/microsoft/git.git
Merge branch 'en/keep-cwd'
Fix a regression in 2.35 that roke the use of "rebase" and "stash" in a secondary worktree. * en/keep-cwd: sequencer, stash: fix running from worktree subdir
This commit is contained in:
Коммит
b23dac905b
|
@ -1539,8 +1539,12 @@ static int do_push_stash(const struct pathspec *ps, const char *stash_msg, int q
|
|||
struct child_process cp = CHILD_PROCESS_INIT;
|
||||
|
||||
cp.git_cmd = 1;
|
||||
if (startup_info->original_cwd)
|
||||
if (startup_info->original_cwd) {
|
||||
cp.dir = startup_info->original_cwd;
|
||||
strvec_pushf(&cp.env_array, "%s=%s",
|
||||
GIT_WORK_TREE_ENVIRONMENT,
|
||||
the_repository->worktree);
|
||||
}
|
||||
strvec_pushl(&cp.args, "clean", "--force",
|
||||
"--quiet", "-d", ":/", NULL);
|
||||
if (include_untracked == INCLUDE_ALL_FILES)
|
||||
|
|
|
@ -4223,8 +4223,11 @@ static int run_git_checkout(struct repository *r, struct replay_opts *opts,
|
|||
|
||||
cmd.git_cmd = 1;
|
||||
|
||||
if (startup_info->original_cwd)
|
||||
if (startup_info->original_cwd) {
|
||||
cmd.dir = startup_info->original_cwd;
|
||||
strvec_pushf(&cmd.env_array, "%s=%s",
|
||||
GIT_WORK_TREE_ENVIRONMENT, r->worktree);
|
||||
}
|
||||
strvec_push(&cmd.args, "checkout");
|
||||
strvec_push(&cmd.args, commit);
|
||||
strvec_pushf(&cmd.env_array, GIT_REFLOG_ACTION "=%s", action);
|
||||
|
|
|
@ -416,4 +416,25 @@ test_expect_success MINGW,SYMLINKS_WINDOWS 'rebase when .git/logs is a symlink'
|
|||
mv actual_logs .git/logs
|
||||
'
|
||||
|
||||
test_expect_success 'rebase when inside worktree subdirectory' '
|
||||
git init main-wt &&
|
||||
(
|
||||
cd main-wt &&
|
||||
git commit --allow-empty -m "initial" &&
|
||||
mkdir -p foo/bar &&
|
||||
test_commit foo/bar/baz &&
|
||||
mkdir -p a/b &&
|
||||
test_commit a/b/c &&
|
||||
# create another branch for our other worktree
|
||||
git branch other &&
|
||||
git worktree add ../other-wt other &&
|
||||
cd ../other-wt &&
|
||||
# create and cd into a subdirectory
|
||||
mkdir -p random/dir &&
|
||||
cd random/dir &&
|
||||
# now do the rebase
|
||||
git rebase --onto HEAD^^ HEAD^ # drops the HEAD^ commit
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче