From: Junio C Hamano Date: Fri, 24 Jul 2026 21:46:47 +0000 (-0700) Subject: Merge branch 'jt/config-lock-timeout' into next X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3cb8da6b6ad609768671276eabb009d9072606a6;p=thirdparty%2Fgit.git Merge branch 'jt/config-lock-timeout' into next Configuration file locking has been updated to retry for a short period, avoiding failures when multiple processes attempt to update the configuration simultaneously. * jt/config-lock-timeout: config: retry acquiring config.lock, configurable via core.configLockTimeout --- 3cb8da6b6ad609768671276eabb009d9072606a6 diff --cc config.c index da2db057a2,ac9563781b..1bdd702e7a --- a/config.c +++ b/config.c @@@ -3037,7 -3004,8 +3055,8 @@@ int repo_config_set_multivar_in_file_ge * The lock serves a purpose in addition to locking: the new * contents of .git/config will be written into it. */ - fd = repo_hold_lock_file_for_update(r, &lock, config_filename, 0); - fd = hold_lock_file_for_update_timeout(&lock, config_filename, 0, - config_lock_timeout_ms(r)); ++ fd = repo_hold_lock_file_for_update_timeout(r, &lock, config_filename, 0, ++ config_lock_timeout_ms(r)); if (fd < 0) { error_errno(_("could not lock config file %s"), config_filename); ret = CONFIG_NO_LOCK; @@@ -3382,7 -3350,8 +3401,9 @@@ static int repo_config_copy_or_rename_s if (!config_filename) config_filename = filename_buf = repo_git_path(r, "config"); - out_fd = repo_hold_lock_file_for_update(r, &lock, config_filename, 0); - out_fd = hold_lock_file_for_update_timeout(&lock, config_filename, 0, - config_lock_timeout_ms(r)); ++ out_fd = repo_hold_lock_file_for_update_timeout(r, &lock, ++ config_filename, 0, ++ config_lock_timeout_ms(r)); if (out_fd < 0) { ret = error(_("could not lock config file %s"), config_filename); goto out;