@@ -160,6 +160,10 @@ function(git_pull)
160160
161161 message (STATUS "Updating ${_fun_REPOSITORY_PATH} " )
162162 find_program (GIT_EXECUTABLE "git" REQUIRED )
163+
164+ # wait for lock before pulling
165+ git_wait (REPOSITORY_PATH "${_fun_REPOSITORY_PATH} " )
166+
163167 execute_process (
164168 COMMAND "${GIT_EXECUTABLE} " "pull" WORKING_DIRECTORY "${_fun_REPOSITORY_PATH} "
165169 COMMAND_ERROR_IS_FATAL LAST
@@ -212,6 +216,9 @@ function(git_checkout)
212216 return ()
213217 endif ()
214218
219+ # wait for lock before checking out
220+ git_wait (REPOSITORY_PATH "${_fun_REPOSITORY_PATH} " )
221+
215222 find_program (GIT_EXECUTABLE "git" REQUIRED )
216223 execute_process (
217224 COMMAND "${GIT_EXECUTABLE} " "-c" "advice.detachedHead=false" "checkout" "${_fun_REVISION} "
@@ -376,7 +383,7 @@ function(git_revision REVISION)
376383 COMMAND "${GIT_EXECUTABLE} " "rev-parse" "HEAD"
377384 OUTPUT_VARIABLE _git_revision
378385 WORKING_DIRECTORY "${_fun_REPOSITORY_PATH} "
379- OUTPUT_STRIP_TRAILING_WHITESPACE
386+ OUTPUT_STRIP_TRAILING_WHITESPACE COMMAND_ERROR_IS_FATAL LAST
380387 )
381388 set (${REVISION} ${_git_revision} PARENT_SCOPE )
382389endfunction ()
@@ -411,7 +418,7 @@ function(git_is_detached IS_DETACHED)
411418 COMMAND "${GIT_EXECUTABLE} " "rev-parse" "--abbrev-ref" "--symbolic-full-name" "HEAD"
412419 OUTPUT_VARIABLE _git_status
413420 WORKING_DIRECTORY "${_fun_REPOSITORY_PATH} "
414- OUTPUT_STRIP_TRAILING_WHITESPACE
421+ OUTPUT_STRIP_TRAILING_WHITESPACE COMMAND_ERROR_IS_FATAL LAST
415422 )
416423 if ("${_git_status} " STREQUAL "HEAD" )
417424 set (${IS_DETACHED} TRUE PARENT_SCOPE )
@@ -444,8 +451,13 @@ function(git_switch_back)
444451
445452 if (${IS_DETACHED} )
446453 message (STATUS "Switch back ${_fun_REPOSITORY_PATH} " )
454+
455+ # wait for lock before switching back
456+ git_wait (REPOSITORY_PATH "${_fun_REPOSITORY_PATH} " )
457+
447458 execute_process (
448459 COMMAND "${GIT_EXECUTABLE} " "switch" "-" WORKING_DIRECTORY "${_fun_REPOSITORY_PATH} "
460+ COMMAND_ERROR_IS_FATAL LAST
449461 )
450462 endif ()
451463endfunction ()
@@ -477,20 +489,17 @@ function(git_wait)
477489
478490 set (counter 0)
479491
480- message (STATUS "Waiting for git lock file...[${counter} /${_fun_TIMEOUT_COUNTER} ]" )
481-
482492 # wait until .git/index is present (in case a parallel clone is running)
483493 while (NOT EXISTS "${_fun_REPOSITORY_PATH} /.git/index"
484494 OR EXISTS "${_fun_REPOSITORY_PATH} /.git/index.lock"
485495 )
486- execute_process (COMMAND ${CMAKE_COMMAND} -E sleep 0.5 )
496+ message (STATUS "Waiting for git lock file...[${counter} /${_fun_TIMEOUT_COUNTER} ]" )
497+ execute_process (COMMAND ${CMAKE_COMMAND} -E sleep 0.5 COMMAND_ERROR_IS_FATAL LAST )
487498
488499 math (EXPR counter "${counter} + 1" )
489500 if (${counter} GREATER ${_fun_TIMEOUT_COUNTER} )
490501 message (STATUS "Timeout waiting for git lock file. Continuing..." )
491502 return ()
492- else ()
493- message (STATUS "Waiting for git lock file...[${counter} /${_fun_TIMEOUT_COUNTER} ]" )
494503 endif ()
495504 endwhile ()
496505endfunction ()
0 commit comments