From 50b29aeba8b3ce352238d54bb8c3b83824eb5a1d Mon Sep 17 00:00:00 2001 From: click Date: Thu, 30 Dec 2010 11:50:10 +0100 Subject: Buildsystem: Use some small git-side tricks to create a "revision-id" for use in the worldserver and versioning-info Thanks to Shauren for digging this out --- cmake/genrev.cmake | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) (limited to 'cmake') diff --git a/cmake/genrev.cmake b/cmake/genrev.cmake index 123e9e559e5..1f6f43eb762 100644 --- a/cmake/genrev.cmake +++ b/cmake/genrev.cmake @@ -9,27 +9,18 @@ # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. execute_process( - COMMAND git log --pretty=format:"" origin/master - COMMAND wc -l + COMMAND git describe --match init --dirty=+ --abbrev=12 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" - OUTPUT_VARIABLE rev_id_str - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET -) - -execute_process( - COMMAND git rev-parse --short=12 HEAD - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" - OUTPUT_VARIABLE rev_hash_str + OUTPUT_VARIABLE rev_info OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) # Last minute check - ensure that we have a proper revision # If everything above fails (means the user has erased the git revision control directory or removed the origin/HEAD tag) -if(NOT rev_id_str) +if(NOT rev_info) message("") - message(STATUS "WARNING - No revision-information found - have you been tampering with the sources?") + message(STATUS "WARNING - No revision-information found") # Ok, since we have no valid ways of finding/setting the revision, let's force some defaults set(rev_hash_str "Archive") @@ -37,10 +28,11 @@ if(NOT rev_id_str) set(rev_id_str "0") set(rev_id "0") else() - string(STRIP ${rev_hash_str} rev_hash_str) - set(rev_hash ${rev_hash_str}) - string(STRIP ${rev_id_str} rev_id_str) - set(rev_id ${rev_id_str}) + # Extract revision and hash from git + string(REGEX REPLACE init-|[0-9]+-g "" rev_hash_str ${rev_info}) + string(REGEX REPLACE [+]+ "" rev_hash ${rev_hash_str}) + string(REGEX REPLACE init-|-g[^+]+ "" rev_id_str ${rev_info}) + string(REGEX REPLACE [+]+ "" rev_id ${rev_id_str}) endif() # Its not set during initial run -- cgit v1.2.3