diff options
| author | Sven Strickroth <email@cs-ware.de> | 2018-04-20 12:54:41 +0200 |
|---|---|---|
| committer | Sven Strickroth <email@cs-ware.de> | 2018-04-20 12:55:41 +0200 |
| commit | fd7b5bc33e48849a3a5ad461dedb41411bc7e2e4 (patch) | |
| tree | a155a5e4ce87280ddb38b3df800a6d9fa0641124 | |
| parent | d906a8796cec1fc4d14144f53e505ab215bdab0c (diff) | |
| download | libgit2-fd7b5bc33e48849a3a5ad461dedb41411bc7e2e4.tar.gz | |
Fix deletion of unrelated branch on worktree
Signed-off-by: Sven Strickroth <email@cs-ware.de>
| -rw-r--r-- | src/refdb_fs.c | 2 | ||||
| -rw-r--r-- | tests/worktree/refs.c | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/src/refdb_fs.c b/src/refdb_fs.c index 140879d23..a193a9867 100644 --- a/src/refdb_fs.c +++ b/src/refdb_fs.c @@ -1319,7 +1319,7 @@ static int refdb_fs_backend__delete_tail( } /* If a loose reference exists, remove it from the filesystem */ - if (git_buf_joinpath(&loose_path, backend->gitpath, ref_name) < 0) + if (git_buf_joinpath(&loose_path, backend->commonpath, ref_name) < 0) return -1; diff --git a/tests/worktree/refs.c b/tests/worktree/refs.c index a10f50a2c..ea36e80e2 100644 --- a/tests/worktree/refs.c +++ b/tests/worktree/refs.c @@ -134,6 +134,28 @@ void test_worktree_refs__delete_succeeds_after_pruning_worktree(void) git_reference_free(branch); } +void test_worktree_refs__delete_unrelated_branch_on_worktree(void) +{ + git_reference *branch; + + cl_git_pass(git_branch_lookup(&branch, fixture.worktree, + "merge-conflict", GIT_BRANCH_LOCAL)); + cl_git_pass(git_branch_delete(branch)); + + git_reference_free(branch); +} + +void test_worktree_refs__delete_unrelated_branch_on_parent(void) +{ + git_reference *branch; + + cl_git_pass(git_branch_lookup(&branch, fixture.repo, + "merge-conflict", GIT_BRANCH_LOCAL)); + cl_git_pass(git_branch_delete(branch)); + + git_reference_free(branch); +} + void test_worktree_refs__renaming_reference_updates_worktree_heads(void) { git_reference *head, *branch, *renamed; |
