Merge branch 'mh/safe-create-leading-directories'
Code clean-up and protection against concurrent write access to the ref namespace. * mh/safe-create-leading-directories: rename_tmp_log(): on SCLD_VANISHED, retry rename_tmp_log(): limit the number of remote_empty_directories() attempts rename_tmp_log(): handle a possible mkdir/rmdir race rename_ref(): extract function rename_tmp_log() remove_dir_recurse(): handle disappearing files and directories remove_dir_recurse(): tighten condition for removing unreadable dir lock_ref_sha1_basic(): if locking fails with ENOENT, retry lock_ref_sha1_basic(): on SCLD_VANISHED, retry safe_create_leading_directories(): add new error value SCLD_VANISHED cmd_init_db(): when creating directories, handle errors conservatively safe_create_leading_directories(): introduce enum for return values safe_create_leading_directories(): always restore slash at end of loop safe_create_leading_directories(): split on first of multiple slashes safe_create_leading_directories(): rename local variable safe_create_leading_directories(): add explicit "slash" pointer safe_create_leading_directories(): reduce scope of local variable safe_create_leading_directories(): fix format of "if" chaining
This commit is contained in:
@ -693,7 +693,7 @@ static int make_room_for_path(struct merge_options *o, const char *path)
|
||||
/* Make sure leading directories are created */
|
||||
status = safe_create_leading_directories_const(path);
|
||||
if (status) {
|
||||
if (status == -3) {
|
||||
if (status == SCLD_EXISTS) {
|
||||
/* something else exists */
|
||||
error(msg, path, _(": perhaps a D/F conflict?"));
|
||||
return -1;
|
||||
|
Reference in New Issue
Block a user