Make git version discovery work on master

This change was neccessary as git-describe only can track tags, and the 0.4.12 release was a non-linear one, with the 0.4.12 tag being on its own branch.

Two things changed for the "outside":
1. Workspaces with changes don't have a "-dirty" appended anymore. This can be added later, however.
2. The commit that represents a version change on the master branch has now to be set manually inside the CMakeLists.txt
This commit is contained in:
est31 2015-02-19 21:51:23 +01:00
parent e357577cb2
commit 4d4d4116dc
3 changed files with 14 additions and 3 deletions

View File

@ -22,6 +22,8 @@ else()
set(VERSION_PATCH ${VERSION_PATCH}-dev)
endif()
set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
set(VERSION_STRING_BASE "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH_ORIG}")
set(LAST_RELEASE_COMMIT "e6ad2ace1072160adcf34a254add4447f935268c")
MESSAGE(STATUS "*** Will build version ${VERSION_STRING} ***")

View File

@ -3,12 +3,19 @@
if(VERSION_EXTRA)
set(VERSION_GITHASH "${VERSION_STRING}")
else(VERSION_EXTRA)
execute_process(COMMAND git describe --always --tag --dirty
execute_process(COMMAND git rev-list ${LAST_RELEASE_COMMIT}..HEAD --count
WORKING_DIRECTORY "${GENERATE_VERSION_SOURCE_DIR}"
OUTPUT_VARIABLE VERSION_GITHASH OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_VARIABLE VERSION_COMMITNUM OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
if(VERSION_GITHASH)
execute_process(COMMAND git rev-parse --short HEAD --count
WORKING_DIRECTORY "${GENERATE_VERSION_SOURCE_DIR}"
OUTPUT_VARIABLE VERSION_COMMITID OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
if(VERSION_COMMITNUM AND VERSION_COMMITID)
set(VERSION_GITHASH "${VERSION_STRING_BASE}-${VERSION_COMMITNUM}-g${VERSION_COMMITID}")
message(STATUS "*** Detected git version ${VERSION_GITHASH} ***")
else()
set(VERSION_GITHASH "${VERSION_STRING}")

View File

@ -347,6 +347,8 @@ add_custom_target(GenerateVersion
-D "GENERATE_VERSION_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}"
-D "GENERATE_VERSION_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}"
-D "VERSION_STRING=${VERSION_STRING}"
-D "VERSION_STRING_BASE=${VERSION_STRING_BASE}"
-D "LAST_RELEASE_COMMIT=${LAST_RELEASE_COMMIT}"
-D "VERSION_EXTRA=${VERSION_EXTRA}"
-P "${CMAKE_SOURCE_DIR}/cmake/Modules/GenerateVersion.cmake"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")