Skip to content

Delete directories left empty after ref deletion

Michael Haggerty git 4 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest23 patches 1 replyIn review
  2. v323 patches 31 repliesSuperseded
  3. v220 patches 0 repliesSuperseded
Earlier versions · 1
VersionPostedPatchesRepliesStatus
v120 patches13 repliesSuperseded

Changes in v4 from the cover letter

* 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].

Patches in v4 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/23files_rename_ref(): tidy up whitespacerefs/files-backend.c+1 -10 replies
2/23refname_is_safe(): correct docstringrefs/refs-internal.h+6 -50 replies
3/23t5505: use "for-each-ref" to test for the non-existence of referencest/t5505-remote.sh+1 -10 replies
4/23safe_create_leading_directories_const(): preserve errnosha1_file.c+4 -00 replies
5/23safe_create_leading_directories(): set errno on SCLD_EXISTScache.h sha1_file.c+6 -30 replies
6/23raceproof_create_file(): new functioncache.h sha1_file.c+111 -00 replies
7/23lock_ref_sha1_basic(): inline constantrefs/files-backend.c+1 -20 replies
8/23lock_ref_sha1_basic(): use raceproof_create_file()refs/files-backend.c+9 -260 replies
9/23rename_tmp_log(): use raceproof_create_file()refs/files-backend.c+30 -430 replies
10/23rename_tmp_log(): improve error reportingrefs/files-backend.c+4 -30 replies
11/23log_ref_write(): inline functionrefs/files-backend.c+10 -140 replies
12/23log_ref_setup(): separate code for create vs non-createrefs/files-backend.c+39 -200 replies
13/23log_ref_setup(): improve robustness against racesrefs/files-backend.c+18 -230 replies
14/23log_ref_setup(): pass the open file descriptor back to the callerrefs/files-backend.c+22 -170 replies
15/23log_ref_write_1(): don't depend on logfile argumentrefs/files-backend.c+8 -40 replies
16/23log_ref_setup(): manage the name of the reflog file internallyrefs/files-backend.c+34 -350 replies
17/23log_ref_write_1(): inline functionrefs/files-backend.c+3 -100 replies
18/23delete_ref_loose(): derive loose reference path from lockrefs/files-backend.c+1 -40 replies
19/23delete_ref_loose(): inline functionrefs/files-backend.c+7 -180 replies
20/23try_remove_empty_parents(): rename parameter "name" -> "refname"refs/files-backend.c+4 -40 replies
21/23try_remove_empty_parents(): don't trash argument contentsrefs/files-backend.c+9 -70 replies
22/23try_remove_empty_parents(): teach to remove parents of reflogs, toorefs/files-backend.c+18 -60 replies
23/23files_transaction_commit(): clean up empty directoriesrefs/files-backend.c refs/refs-internal.h t/t1400-update-ref.sh+64 -80 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v4 yet.

Read the v4 thread

Cover letter [PATCH v4 00/23] Delete directories left empty after ref deletion

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/[email protected]/T/#u
[2] http://public-inbox.org/git/[email protected]/T/#u
[3] http://public-inbox.org/git/[email protected]/T/#u
[4] http://public-inbox.org/git/[email protected]/
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(-)
Signature · 1 line
2.9.3