Merge branch 'nd/worktree-kill-parse-ref' into maint
"git branch -M a b" while on a branch that is completely unrelated to either branch a or branch b misbehaved when multiple worktree was in use. This has been fixed. * nd/worktree-kill-parse-ref: branch: fix branch renaming not updating HEADs correctly
This commit is contained in:
commit
5253ad109a
5
branch.c
5
branch.c
@ -357,8 +357,9 @@ int replace_each_worktree_head_symref(const char *oldref, const char *newref,
|
||||
|
||||
if (worktrees[i]->is_detached)
|
||||
continue;
|
||||
if (worktrees[i]->head_ref &&
|
||||
strcmp(oldref, worktrees[i]->head_ref))
|
||||
if (!worktrees[i]->head_ref)
|
||||
continue;
|
||||
if (strcmp(oldref, worktrees[i]->head_ref))
|
||||
continue;
|
||||
|
||||
refs = get_worktree_ref_store(worktrees[i]);
|
||||
|
@ -162,6 +162,19 @@ test_expect_success 'git branch -M baz bam should add entries to .git/logs/HEAD'
|
||||
grep "^0\{40\}.*$msg$" .git/logs/HEAD
|
||||
'
|
||||
|
||||
test_expect_success 'git branch -M should leave orphaned HEAD alone' '
|
||||
git init orphan &&
|
||||
(
|
||||
cd orphan &&
|
||||
test_commit initial &&
|
||||
git checkout --orphan lonely &&
|
||||
grep lonely .git/HEAD &&
|
||||
test_path_is_missing .git/refs/head/lonely &&
|
||||
git branch -M master mistress &&
|
||||
grep lonely .git/HEAD
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'resulting reflog can be shown by log -g' '
|
||||
oid=$(git rev-parse HEAD) &&
|
||||
cat >expect <<-EOF &&
|
||||
|
@ -30,7 +30,7 @@ static void add_head_info(struct worktree *wt)
|
||||
|
||||
target = refs_resolve_ref_unsafe(get_worktree_ref_store(wt),
|
||||
"HEAD",
|
||||
RESOLVE_REF_READING,
|
||||
0,
|
||||
wt->head_sha1, &flags);
|
||||
if (!target)
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user