Merge branch 'ps/refs-files-remove-empty-parent'
When a ref creation at refs/heads/foo/bar fails, the files backend now removes refs/heads/foo/ if the directory is otherwise not used. * ps/refs-files-remove-empty-parent: refs/files: remove empty parent dirs when ref creation fails
This commit is contained in:
@@ -2760,6 +2760,8 @@ static void files_transaction_cleanup(struct files_ref_store *refs,
|
|||||||
|
|
||||||
if (lock) {
|
if (lock) {
|
||||||
unlock_ref(lock);
|
unlock_ref(lock);
|
||||||
|
try_remove_empty_parents(refs, update->refname,
|
||||||
|
REMOVE_EMPTY_PARENTS_REF);
|
||||||
update->backend_data = NULL;
|
update->backend_data = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2349,4 +2349,23 @@ test_expect_success 'update-ref should also create reflog for HEAD' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success REFFILES 'empty directories are pruned when aborting a transaction' '
|
||||||
|
test_path_is_missing .git/refs/heads/nested &&
|
||||||
|
git update-ref --stdin <<-EOF &&
|
||||||
|
create refs/heads/nested/something HEAD
|
||||||
|
prepare
|
||||||
|
abort
|
||||||
|
EOF
|
||||||
|
test_path_is_missing .git/refs/heads/nested
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success REFFILES 'empty directories are pruned when not committing' '
|
||||||
|
test_path_is_missing .git/refs/heads/nested &&
|
||||||
|
git update-ref --stdin <<-EOF &&
|
||||||
|
create refs/heads/nested/something HEAD
|
||||||
|
prepare
|
||||||
|
EOF
|
||||||
|
test_path_is_missing .git/refs/heads/nested
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|||||||
Reference in New Issue
Block a user