find_package(Git)
if(GIT_FOUND)
+ message(STATUS "Git version = ${GIT_VERSION_STRING}")
+
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
# generate the short version of the revision hash
if(NOT res EQUAL 0)
set(GIT_SHORT_SHA1 ${GIT_SHA1})
endif()
-
- # generate the short version of the revision hash
- execute_process(COMMAND git rev-list --count ${GIT_SHA1}
- WORKING_DIRECTORY ${AliRoot_SOURCE_DIR}
- OUTPUT_STRIP_TRAILING_WHITESPACE
- RESULT_VARIABLE revcount
- OUTPUT_VARIABLE ALIROOT_SERIAL)
+ # Older Git version < 1.7.3 do not have --count option for rev-list
+ # We use simple rev-list and we count the lines of the output
+ string(COMPARE GREATER "${GIT_VERSION_STRING}" "1.7.3" NEWGIT)
+
+ if(NEWGIT)
+ # generate the short version of the revision hash using --count
+ execute_process(COMMAND git rev-list --count ${GIT_SHA1}
+ WORKING_DIRECTORY ${AliRoot_SOURCE_DIR}
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ RESULT_VARIABLE revcount
+ OUTPUT_VARIABLE ALIROOT_SERIAL_ORIGINAL)
+ else()
+ # generate the short version of the revision hash using -wc -l
+ execute_process(COMMAND git rev-list ${GIT_SHA1}
+ COMMAND wc -l
+ WORKING_DIRECTORY ${AliRoot_SOURCE_DIR}
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ RESULT_VARIABLE revcount
+ OUTPUT_VARIABLE ALIROOT_SERIAL_ORIGINAL)
+ endif()
# GIT_REFSPEC is empty for detached mode = tags in detached mode or checkout to specific hash
string(REPLACE "tags/" "" ALIROOT_GIT_TAG ${ALIROOT_GIT_TAG})
endif(ALIROOT_GIT_TAG)
+ # using the closest tag for branches
+ git_describe(ALIROOT_CLOSEST_GIT_TAG "--abbrev=0")
+
+ if(ALIROOT_GIT_TAG)
+ string(STRIP ${ALIROOT_GIT_TAG} ALIROOT_GIT_TAG)
+ string(REPLACE "tags/" "" ALIROOT_GIT_TAG ${ALIROOT_GIT_TAG})
+ endif(ALIROOT_GIT_TAG)
+
STRING(REGEX REPLACE "^(.+/)(.+)/(.*)$" "\\2" BRANCH_TYPE "${GIT_REFSPEC}" )
# the revision is not set in the case of a branch, it means we are doing development
if(BRANCH_TYPE STREQUAL "heads")
set(ALIROOT_REVISION "ThisIsaBranchNoRevisionProvided")
set(ALIROOT_SERIAL 0)
+ set(ALIROOT_GIT_TAG ${ALIROOT_CLOSEST_GIT_TAG})
STRING(REGEX REPLACE "^(.+/)(.+/)(.*)$" "\\3" SHORT_BRANCH "${GIT_REFSPEC}" )
message(STATUS "This is a working branch, ARVersion will not contain the revision and the serial number")
else()
+ set(BRANCH_TYPE "tags")
set(SHORT_BRANCH ${ALIROOT_GIT_TAG})
set(ALIROOT_REVISION ${GIT_SHORT_SHA1})
+ set(ALIROOT_SERIAL ${ALIROOT_SERIAL_ORIGINAL})
endif()
set(ALIROOT_BRANCH ${SHORT_BRANCH})
set(ALIROOT_VERSION ${SHORT_BRANCH})
+ # extract major minor and patch from AliRoot tag
+ string(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" ALIROOT_VERSION_MAJOR "${ALIROOT_GIT_TAG}")
+ string(REGEX REPLACE "^[0-9]+\\.([0-9])+\\.[0-9]+" "\\1" ALIROOT_VERSION_MINOR "${ALIROOT_GIT_TAG}")
+ string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" ALIROOT_VERSION_PATCH "${ALIROOT_GIT_TAG}")
+ message(STATUS "Found ALIROOT version ${ALIROOT_VERSION_MAJOR}.${ALIROOT_VERSION_MINOR}.${ALIROOT_VERSION_PATCH}")
+
# Replace - with . for rpm creation
string(REPLACE "-" "." ALIROOT_VERSION_RPM ${ALIROOT_VERSION})
-
- message(STATUS "Aliroot branch/tag: \"${ALIROOT_VERSION}\" - Revision: \"${GIT_SHORT_SHA1}\" - Serial: \"${ALIROOT_SERIAL}\"")
+ message(STATUS "Aliroot branch/tag: \"${ALIROOT_VERSION}\" - Revision: \"${GIT_SHORT_SHA1}\" - Serial: \"${ALIROOT_SERIAL_ORIGINAL}\"")
else()
message(STATUS "Git not installed. I can't tell you which revision you are using!")