Merge branch 'mh/safe-create-leading-directories'
commitd0956cfa8ef8b3668ea6adc94b27f5dcdc93bde0
authorJunio C Hamano <gitster@pobox.com>
Mon, 27 Jan 2014 18:45:33 +0000 (27 10:45 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Jan 2014 18:45:33 +0000 (27 10:45 -0800)
tree188ea26d10feaf884b59423fdf8c8bafeb73e718
parentc380cf85a79c78d9dceb9290c9d4017d30804521
parent08f555cb82f92797ca0aa0d6ba32e6872f1331e5
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
builtin/init-db.c
cache.h
dir.c
merge-recursive.c
refs.c
sha1_file.c