diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-09-22 16:00:23 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-09-22 16:01:01 +0300 |
commit | 9937f2887742e22b0bca33d6f8cdeaa4333e8fb1 (patch) | |
tree | 4e375859fa336c6e69cc9a3e77227104074b7792 /build_files/cmake/buildinfo.cmake | |
parent | ab09a80d33ece770f0b722e8f4c329f558cc9896 (diff) |
Buildinfo: Improve behavior with detached HEAD
Try real hard to detect which branch we've detached from.
Diffstat (limited to 'build_files/cmake/buildinfo.cmake')
-rw-r--r-- | build_files/cmake/buildinfo.cmake | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/build_files/cmake/buildinfo.cmake b/build_files/cmake/buildinfo.cmake index af0ccd250e8..1f0a283ba0e 100644 --- a/build_files/cmake/buildinfo.cmake +++ b/build_files/cmake/buildinfo.cmake @@ -27,13 +27,12 @@ if(EXISTS ${SOURCE_DIR}/.git) OUTPUT_VARIABLE MY_WC_HASH OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND git branch --list master --contains ${MY_WC_HASH} + execute_process(COMMAND git branch --list master blender-v* --contains ${MY_WC_HASH} WORKING_DIRECTORY ${SOURCE_DIR} OUTPUT_VARIABLE _git_contains_check OUTPUT_STRIP_TRAILING_WHITESPACE) - STRING(REGEX REPLACE "^[ \t]+" "" _git_contains_check "${_git_contains_check}") - if(_git_contains_check STREQUAL "master") + if(NOT _git_contains_check STREQUAL "") set(MY_WC_BRANCH "master") else() execute_process(COMMAND git show-ref --tags -d @@ -48,6 +47,22 @@ if(EXISTS ${SOURCE_DIR}/.git) if(_git_tag_hashes MATCHES "${_git_head_hash}") set(MY_WC_BRANCH "master") + else() + execute_process(COMMAND git branch --contains ${MY_WC_HASH} + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE _git_contains_branches + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX REPLACE "^\\*[ \t]+" "" _git_contains_branches "${_git_contains_branches}") + string(REGEX REPLACE "[\r\n]+" ";" _git_contains_branches "${_git_contains_branches}") + string(REGEX REPLACE ";[ \t]+" ";" _git_contains_branches "${_git_contains_branches}") + foreach(_branch ${_git_contains_branches}) + if (NOT "${_branch}" MATCHES "\\(HEAD.*") + set(MY_WC_BRANCH "${_branch}") + break() + endif() + endforeach() + unset(_branch) + unset(_git_contains_branches) endif() unset(_git_tag_hashes) |