Sorry, I forgot to send this re-roll to the mailing list. This version differs only very slightly from v2: * Rebased to the current master (there were no conflicts). * Rename a couple of local variables from "attempts" to "attempts_remaining". * Patches 13, 16, and 17 have slightly improved commit messages. Michael Haggerty (17): safe_create_leading_directories(): fix format of "if" chaining safe_create_leading_directories(): reduce scope of local variable safe_create_leading_directories(): add explicit "slash" pointer safe_create_leading_directories(): rename local variable safe_create_leading_directories(): split on first of multiple slashes safe_create_leading_directories(): always restore slash at end of loop safe_create_leading_directories(): introduce enum for return values cmd_init_db(): when creating directories, handle errors conservatively safe_create_leading_directories(): add new error value SCLD_VANISHED lock_ref_sha1_basic(): on SCLD_VANISHED, retry lock_ref_sha1_basic(): if locking fails with ENOENT, retry remove_dir_recurse(): tighten condition for removing unreadable dir remove_dir_recurse(): handle disappearing files and directories rename_ref(): extract function rename_tmp_log() rename_tmp_log(): handle a possible mkdir/rmdir race rename_tmp_log(): limit the number of remote_empty_directories() attempts rename_tmp_log(): on SCLD_VANISHED, retry builtin/init-db.c | 9 +++--- cache.h | 25 +++++++++++++-- dir.c | 27 +++++++++++----- merge-recursive.c | 2 +- refs.c | 92 ++++++++++++++++++++++++++++++++++++++++--------------- sha1_file.c | 67 ++++++++++++++++++++++------------------ 6 files changed, 155 insertions(+), 67 deletions(-) -- 1.8.5.2 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html