[PATCH v4 00/23] Delete directories left empty after ref deletion
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Jan 6, 2017, 16:22 UTC
- Message-ID
- <cover.1483719289.git.mhagger@alum.mit.edu>
This is v4 of this patch series. Thanks to Peff, Junio, Jake, and Philip for their feedback about v3. I believe I have addressed all of the comments about v1 [1], v2 [2], and v3 [3].
Changes since v3:
* Insert a new first patch correcting the docstring of `refname_is_safe()`.
* In "raceproof_create_file(): new function", tweak a comment for clarity as suggested by Peff.
* In "log_ref_setup(): separate code for create vs non-create", add a semicolon to an otherwise empty code block as requested by Junio.
* Drop the patch "try_remove_empty_parents(): don't accommodate consecutive slashes", for reasons discussed on the ML [4].
Michael
[1] http://public-inbox.org/git/cover.1455626201.git.mhagger@alum.mit.edu/T/#u [2] http://public-inbox.org/git/cover.1456405698.git.mhagger@alum.mit.edu/T/#u [3] http://public-inbox.org/git/cover.1483153436.git.mhagger@alum.mit.edu/T/#u [4] http://public-inbox.org/git/5051c78e-51f9-becd-e1a6-9c0b781d6912@alum.mit.edu/ and surrounding thread.
Michael Haggerty (23): files_rename_ref(): tidy up whitespace refname_is_safe(): correct docstring t5505: use "for-each-ref" to test for the non-existence of references safe_create_leading_directories_const(): preserve errno safe_create_leading_directories(): set errno on SCLD_EXISTS raceproof_create_file(): new function lock_ref_sha1_basic(): inline constant lock_ref_sha1_basic(): use raceproof_create_file() rename_tmp_log(): use raceproof_create_file() rename_tmp_log(): improve error reporting log_ref_write(): inline function log_ref_setup(): separate code for create vs non-create log_ref_setup(): improve robustness against races log_ref_setup(): pass the open file descriptor back to the caller log_ref_write_1(): don't depend on logfile argument log_ref_setup(): manage the name of the reflog file internally log_ref_write_1(): inline function delete_ref_loose(): derive loose reference path from lock delete_ref_loose(): inline function try_remove_empty_parents(): rename parameter "name" -> "refname" try_remove_empty_parents(): don't trash argument contents try_remove_empty_parents(): teach to remove parents of reflogs, too files_transaction_commit(): clean up empty directories
cache.h | 48 ++++++- refs/files-backend.c | 371 +++++++++++++++++++++++++------------------------- refs/refs-internal.h | 22 ++- sha1_file.c | 76 ++++++++++- t/t1400-update-ref.sh | 27 ++++ t/t5505-remote.sh | 2 +- 6 files changed, 351 insertions(+), 195 deletions(-)
-- 2.9.3