Skip to content

Commit cf86580

Browse files
kouvuvova
authored andcommitted
MDEV-28032 "git submodule update --depth 1" may fail with old Git
submodules.cmake: don't use "--depth 1" with old Git Old Git may not work with "--depth 1" when the referenced commit hash is far from HEAD. Newer Git improves the situation. For example: git/git@fb43e31 It's safe to not use "--depth 1" with old Git. Closes #2049
1 parent ecb6f9c commit cf86580

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

cmake/submodules.cmake

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,29 @@ IF(GIT_EXECUTABLE AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
1717
${GIT_EXECUTABLE} config cmake.update-submodules yes")
1818
ELSEIF(git_config_get_result EQUAL 128)
1919
SET(update_result 0)
20-
ELSEIF (cmake_update_submodules MATCHES force)
21-
MESSAGE(STATUS "Updating submodules (forced)")
22-
EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule update --init --force --depth=1
23-
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
24-
RESULT_VARIABLE update_result)
25-
ELSEIF (cmake_update_submodules MATCHES yes)
26-
EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule update --init --depth=1
27-
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
28-
RESULT_VARIABLE update_result)
2920
ELSE()
30-
MESSAGE(STATUS "Updating submodules")
31-
EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule update --init --depth=1
32-
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
33-
RESULT_VARIABLE update_result)
21+
SET(UPDATE_SUBMODULES_COMMAND
22+
"${GIT_EXECUTABLE}" submodule update --init --recursive)
23+
# Old Git may not work with "--depth 1".
24+
# See also: https://github.com/git/git/commit/fb43e31f2b43076e7a30c9cd00d0241cb8cf97eb
25+
IF(NOT GIT_VERSION_STRING VERSION_LESS "2.8.0")
26+
SET(UPDATE_SUBMODULES_COMMAND ${UPDATE_SUBMODULES_COMMAND} --depth 1)
27+
ENDIF()
28+
IF(cmake_update_submodules MATCHES force)
29+
MESSAGE(STATUS "Updating submodules (forced)")
30+
EXECUTE_PROCESS(COMMAND ${UPDATE_SUBMODULES_COMMAND} --force
31+
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
32+
RESULT_VARIABLE update_result)
33+
ELSEIF(cmake_update_submodules MATCHES yes)
34+
EXECUTE_PROCESS(COMMAND ${UPDATE_SUBMODULES_COMMAND}
35+
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
36+
RESULT_VARIABLE update_result)
37+
ELSE()
38+
MESSAGE(STATUS "Updating submodules")
39+
EXECUTE_PROCESS(COMMAND ${UPDATE_SUBMODULES_COMMAND}
40+
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
41+
RESULT_VARIABLE update_result)
42+
ENDIF()
3443
ENDIF()
3544
ENDIF()
3645

0 commit comments

Comments
 (0)