From b254b0651ef093476322165f919e0a930534473b Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 11 Oct 2019 13:43:46 -0400 Subject: CMakeVersion: Prefer Git information provided by 'git archive' exports Update the approach from commit fe2c558ba6 (CMakeVersion: Preserve Git information during 'git archive', 2019-07-25, v3.16.0-rc1~337^2) to prefer `export-subst` information. This will allow exported source trees to be imported into unrelated Git repositories while still using the original upstream CMake commit information. --- Source/CMakeVersion.cmake | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 0f2a2d2..092f64d 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -19,7 +19,12 @@ else() set(CMake_VERSION_IS_RELEASE 0) endif() -if(EXISTS ${CMake_SOURCE_DIR}/.git) +# If this source was exported by 'git archive', use its commit info. +set(git_info [==[$Format:%h %s$]==]) + +# Otherwise, try to identify the current development source version. +if(NOT git_info MATCHES "^([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]?[0-9a-f]?)[0-9a-f]* " + AND EXISTS ${CMake_SOURCE_DIR}/.git) find_package(Git QUIET) if(GIT_FOUND) macro(_git) @@ -32,16 +37,11 @@ if(EXISTS ${CMake_SOURCE_DIR}/.git) ) endmacro() endif() -endif() - -# Try to identify the current development source version. -if(COMMAND _git) - # Get the commit checked out in this work tree. - _git(log -n 1 HEAD "--pretty=format:%h %s" --) - set(git_info "${_git_out}") -else() - # Get the commit exported by 'git archive'. - set(git_info [==[$Format:%h %s$]==]) + if(COMMAND _git) + # Get the commit checked out in this work tree. + _git(log -n 1 HEAD "--pretty=format:%h %s" --) + set(git_info "${_git_out}") + endif() endif() # Extract commit information if available. -- cgit v0.12