Skip to content

Commit 59462c0

Browse files
authored
Merge pull request #152 from aminya/vcpkg [skip ci]
2 parents da16f4d + ec9be4a commit 59462c0

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

src/Vcpkg.cmake

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ macro(run_vcpkg)
1515
""
1616
${ARGN})
1717

18+
find_program(GIT_EXECUTABLE "git" REQUIRED)
19+
1820
if(NOT
1921
"${_vcpkg_args_VCPKG_DIR}"
2022
STREQUAL
@@ -39,8 +41,26 @@ macro(run_vcpkg)
3941
if(EXISTS "${_vcpkg_args_VCPKG_DIR}" AND EXISTS "${_vcpkg_args_VCPKG_DIR}/vcpkg${CMAKE_EXECUTABLE_SUFFIX}")
4042
message(STATUS "vcpkg is already installed at ${_vcpkg_args_VCPKG_DIR}.")
4143
if(${_vcpkg_args_ENABLE_VCPKG_UPDATE})
44+
45+
if(NOT
46+
"${_vcpkg_args_VCPKG_REV}"
47+
STREQUAL
48+
"")
49+
# detect if the head is detached, if so, switch back before calling git pull on a detached head
50+
set(GIT_STATUS "")
51+
execute_process(
52+
COMMAND "${GIT_EXECUTABLE}" "rev-parse" "--abbrev-ref" "--symbolic-full-name" "HEAD"
53+
OUTPUT_VARIABLE GIT_STATUS
54+
WORKING_DIRECTORY "${_vcpkg_args_VCPKG_DIR}"
55+
OUTPUT_STRIP_TRAILING_WHITESPACE)
56+
if("${GIT_STATUS}" STREQUAL "HEAD")
57+
message(STATUS "Switching back before updating")
58+
execute_process(COMMAND "${GIT_EXECUTABLE}" "switch" "-" WORKING_DIRECTORY "${_vcpkg_args_VCPKG_DIR}")
59+
endif()
60+
endif()
61+
4262
message(STATUS "Updating the repository...")
43-
execute_process(COMMAND "git" "pull" WORKING_DIRECTORY "${_vcpkg_args_VCPKG_DIR}")
63+
execute_process(COMMAND "${GIT_EXECUTABLE}" "pull" WORKING_DIRECTORY "${_vcpkg_args_VCPKG_DIR}")
4464
endif()
4565
else()
4666
message(STATUS "Installing vcpkg at ${_vcpkg_args_VCPKG_DIR}")
@@ -49,7 +69,6 @@ macro(run_vcpkg)
4969
if("${_vcpkg_args_VCPKG_URL}" STREQUAL "")
5070
set(_vcpkg_args_VCPKG_URL "https://github.com/microsoft/vcpkg.git")
5171
endif()
52-
find_program(GIT_EXECUTABLE "git" REQUIRED)
5372
execute_process(COMMAND "${GIT_EXECUTABLE}" "clone" "${_vcpkg_args_VCPKG_URL}"
5473
WORKING_DIRECTORY "${VCPKG_PARENT_DIR}" COMMAND_ERROR_IS_FATAL LAST)
5574
endif()
@@ -67,7 +86,6 @@ macro(run_vcpkg)
6786
"${_vcpkg_args_VCPKG_REV}"
6887
STREQUAL
6988
"")
70-
find_program(GIT_EXECUTABLE "git" REQUIRED)
7189
execute_process(COMMAND "${GIT_EXECUTABLE}" "checkout" "${_vcpkg_args_VCPKG_REV}"
7290
WORKING_DIRECTORY "${VCPKG_PARENT_DIR}/vcpkg" COMMAND_ERROR_IS_FATAL LAST)
7391
endif()

0 commit comments

Comments
 (0)