Skip to content

Commit 5ace149

Browse files
authored
Merge pull request libgit2#4633 from csware/worktree-delereref
Fix deletion of unrelated branch on worktree
2 parents 86353a7 + fd7b5bc commit 5ace149

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

src/refdb_fs.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1319,7 +1319,7 @@ static int refdb_fs_backend__delete_tail(
13191319
}
13201320

13211321
/* If a loose reference exists, remove it from the filesystem */
1322-
if (git_buf_joinpath(&loose_path, backend->gitpath, ref_name) < 0)
1322+
if (git_buf_joinpath(&loose_path, backend->commonpath, ref_name) < 0)
13231323
return -1;
13241324

13251325

tests/worktree/refs.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,28 @@ void test_worktree_refs__delete_succeeds_after_pruning_worktree(void)
134134
git_reference_free(branch);
135135
}
136136

137+
void test_worktree_refs__delete_unrelated_branch_on_worktree(void)
138+
{
139+
git_reference *branch;
140+
141+
cl_git_pass(git_branch_lookup(&branch, fixture.worktree,
142+
"merge-conflict", GIT_BRANCH_LOCAL));
143+
cl_git_pass(git_branch_delete(branch));
144+
145+
git_reference_free(branch);
146+
}
147+
148+
void test_worktree_refs__delete_unrelated_branch_on_parent(void)
149+
{
150+
git_reference *branch;
151+
152+
cl_git_pass(git_branch_lookup(&branch, fixture.repo,
153+
"merge-conflict", GIT_BRANCH_LOCAL));
154+
cl_git_pass(git_branch_delete(branch));
155+
156+
git_reference_free(branch);
157+
}
158+
137159
void test_worktree_refs__renaming_reference_updates_worktree_heads(void)
138160
{
139161
git_reference *head, *branch, *renamed;

0 commit comments

Comments
 (0)