Subject: [PATCH v2 00/20] Delete directories left empty after ref deletion

From: Michael Haggerty <[email-masked]>
Date: Thu, 25 Feb 2016 14:15:59 +0100

This re-roll addresses a few minor points that were brought up about v1 [1]:

* "safe_create_leading_directories(): set errno on SCLD_EXISTS":
  * Set errno to ENOTDIR rather than EEXIST.

* "raceproof_create_file(): new function":
  * Improve comments.

* "rename_tmp_log(): use raceproof_create_file()":
  * Fix whitespace.

* "rename_tmp_log(): improve error reporting":
  * Fix whitespace.

This patch series is also available from my GitHub account [2] as
branch delete-empty-refs-dirs.

Thanks to Junio and Peff for their feedback about v1.

Michael

[1] http://thread.gmane.org/gmane.comp.version-control.git/286370
[2] http://github.com/mhagger/git

Michael Haggerty (20):
  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(): use raceproof_create_file()
  rename_tmp_log(): use raceproof_create_file()
  rename_tmp_log(): improve error reporting
  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
  log_ref_setup(): manage the name of the reflog file internally
  log_ref_write_1(): inline function
  try_remove_empty_parents(): rename parameter "name" -> "refname"
  try_remove_empty_parents(): don't trash argument contents
  try_remove_empty_parents(): don't accommodate consecutive slashes
  t5505: use "for-each-ref" to test for the non-existence of references
  delete_ref_loose(): derive loose reference path from lock
  delete_ref_loose(): inline function
  try_remove_empty_parents(): teach to remove parents of reflogs, too
  ref_transaction_commit(): clean up empty directories

 cache.h               |  52 ++++++-
 refs/files-backend.c  | 370 ++++++++++++++++++++++++++------------------------
 refs/refs-internal.h  |   9 +-
 sha1_file.c           |  77 ++++++++++-
 t/t1400-update-ref.sh |  27 ++++
 t/t5505-remote.sh     |   2 +-
 6 files changed, 351 insertions(+), 186 deletions(-)

-- 
2.7.0