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 failsmaint
commit
ac5fd29581
|
|
@ -2760,6 +2760,8 @@ static void files_transaction_cleanup(struct files_ref_store *refs,
|
|||
|
||||
if (lock) {
|
||||
unlock_ref(lock);
|
||||
try_remove_empty_parents(refs, update->refname,
|
||||
REMOVE_EMPTY_PARENTS_REF);
|
||||
update->backend_data = NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2349,4 +2349,23 @@ test_expect_success 'update-ref should also create reflog for HEAD' '
|
|||
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
|
||||
|
|
|
|||
Loading…
Reference in New Issue