diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2016-03-13 17:07:04 +0100 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2016-03-13 17:07:04 +0100 |
commit | a83ef111c8d527f9d8a6ef764d55c5baa06d5b54 (patch) | |
tree | e2f9fc73b25efcd5ab64fb443454b48e3e787729 | |
parent | 90842c23a29aea65aa29904bdd06c2b75d5cc9e3 (diff) | |
download | xK-a83ef111c8d527f9d8a6ef764d55c5baa06d5b54.tar.gz xK-a83ef111c8d527f9d8a6ef764d55c5baa06d5b54.tar.xz xK-a83ef111c8d527f9d8a6ef764d55c5baa06d5b54.zip |
Fix git commit tracking
-rw-r--r-- | CMakeLists.txt | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index fc06bb6..aada20f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,8 +19,16 @@ set (project_version "0.9.2") # we could also detect dirty worktrees but that's very hard to get right. find_package (Git) set (git_head "${PROJECT_SOURCE_DIR}/.git/HEAD") -if (GIT_FOUND AND EXISTS ${git_head}) - configure_file (${git_head} git-head.tag COPYONLY) +if (GIT_FOUND AND EXISTS "${git_head}") + configure_file ("${git_head}" git-head.tag COPYONLY) + file (READ "${git_head}" git_head_content) + if (git_head_content MATCHES "^ref: ([^\r\n]+)") + set (git_ref "${PROJECT_SOURCE_DIR}/.git/${CMAKE_MATCH_1}") + if (EXISTS "${git_ref}") + configure_file ("${git_ref}" git-ref.tag COPYONLY) + endif (EXISTS "${git_ref}") + endif (git_head_content MATCHES "^ref: ([^\r\n]+)") + execute_process (COMMAND ${GIT_EXECUTABLE} describe --tags --match v* WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} RESULT_VARIABLE git_describe_result @@ -28,7 +36,7 @@ if (GIT_FOUND AND EXISTS ${git_head}) if (NOT git_describe_result) string (REGEX REPLACE "^v" "" project_version "${git_describe}") endif (NOT git_describe_result) -endif (GIT_FOUND AND EXISTS ${git_head}) +endif (GIT_FOUND AND EXISTS "${git_head}") # Dashes make filenames confusing and upset packaging software string (REPLACE "-" "+" project_version_safe "${project_version}") |