summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-03-31 16:53:51 (GMT)
committerBrad King <brad.king@kitware.com>2017-03-31 16:59:53 (GMT)
commit6f3838c034e652b90d9c2571851729313880a328 (patch)
tree88369262e39095ba688bc440aa37d32524df5be5
parent18eeed41948b265168497ea3360e7b0d56e8e8a9 (diff)
downloadCMake-6f3838c034e652b90d9c2571851729313880a328.zip
CMake-6f3838c034e652b90d9c2571851729313880a328.tar.gz
CMake-6f3838c034e652b90d9c2571851729313880a328.tar.bz2
ExternalProject: Fix regression in GIT_TAG with remote branch name
The change in commit v3.8.0-rc2~7^2 (ExternalProject: Run `git checkout` with `--` to clarify arguments, 2017-02-24) broke the case of `GIT_TAG some-remote-branch` because an explicit `--` means that the preceding argument is a tree-ish instead of a branch. Revert the change and leave a comment. Fixes: #16763
-rw-r--r--Modules/ExternalProject.cmake5
1 files changed, 4 insertions, 1 deletions
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 00781d6..b42d2dd 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -600,8 +600,11 @@ if(error_code)
message(FATAL_ERROR \"Failed to clone repository: '${git_repository}'\")
endif()
+# Use `git checkout <branch>` even though this risks ambiguity with a
+# local path. Unfortunately we cannot use `git checkout <tree-ish> --`
+# because that will not search for remote branch names, a common use case.
execute_process(
- COMMAND \"${git_EXECUTABLE}\" \${git_options} checkout ${git_tag} --
+ COMMAND \"${git_EXECUTABLE}\" \${git_options} checkout ${git_tag}
WORKING_DIRECTORY \"${work_dir}/${src_name}\"
RESULT_VARIABLE error_code
)