diff --git a/.git-archive-version b/.git-archive-version new file mode 100644 index 000000000..15db4cfd4 --- /dev/null +++ b/.git-archive-version @@ -0,0 +1,2 @@ +# Becomes like v2.13.0-555-g11e37a0bd if git-archived, is kept as-is otherwise +$Format:%(describe)$ diff --git a/.gitattributes b/.gitattributes index a6ab5f7a5..398024b46 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,5 @@ debian/ export-ignore .gitattributes export-ignore + +# Include version information on `git archive' +/.git-archive-version export-subst diff --git a/CMakeLists.txt b/CMakeLists.txt index fce41f411..43079de67 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,8 +105,14 @@ string(SUBSTRING ${SPEC_VERSION} 9 ${SPEC_VERSION_LENGTH} SPEC_VERSION) configure_file(icinga-spec-version.h.cmake icinga-spec-version.h) -include(GetGitRevisionDescription) -git_describe(GIT_VERSION --tags) +file(STRINGS .git-archive-version GIT_ARCHIVE_VERSION REGEX "^[^#]") +if(GIT_ARCHIVE_VERSION MATCHES "Format") + include(GetGitRevisionDescription) + git_describe(GIT_VERSION --tags) +else() + set(GIT_VERSION "${GIT_ARCHIVE_VERSION}") +endif() + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/icinga-version.h.force) configure_file(icinga-version.h.force ${CMAKE_CURRENT_BINARY_DIR}/icinga-version.h COPYONLY) else()