refs: cleanup directories when deleting packed ref
authorWill Chandler <wfc@wfchandler.org>
Sat, 8 May 2021 05:00:43 +0000 (01:00 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 11 May 2021 04:59:57 +0000 (13:59 +0900)
commit5f03e5126d895283e6d42093dd4f15cbc30011dd
treecf827a2550bace761752ff9f32440edce9ca039a
parent48bf2fa8bad054d66bd79c6ba903c89c704201f7
refs: cleanup directories when deleting packed ref

When deleting a packed ref via 'update-ref -d', a lockfile is made in
the directory that would contain the loose copy of that ref, creating
any directories in the ref's path that do not exist. When the
transaction completes, the lockfile is deleted, but any empty parent
directories made when creating the lockfile are left in place.  These
empty directories are not removed by 'pack-refs' or other housekeeping
tasks and will accumulate over time.

When deleting a loose ref, we remove all empty parent directories at the
end of the transaction.

This commit applies the parent directory cleanup logic used when
deleting loose refs to packed refs as well.

Signed-off-by: Will Chandler <wfc@wfchandler.org>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs/files-backend.c
t/t1400-update-ref.sh