Build info: Ensure hash length is same across all platforms and has no conflicts
authorSergey Sharybin <sergey.vfx@gmail.com>
Wed, 19 Dec 2018 11:47:25 +0000 (12:47 +0100)
committerSergey Sharybin <sergey.vfx@gmail.com>
Wed, 19 Dec 2018 11:56:32 +0000 (12:56 +0100)
The original issue was that different platforms will use different
hash lengths, just because defaults on Git client were different.

Now we use explicit length for the hash, and length is the same as
is used for short hashes in Linux -- apparently they started to have
collisions with length of 11.

build_files/cmake/buildinfo.cmake
build_files/cmake/packaging.cmake

index a43b99f..12bbf49 100644 (file)
@@ -22,7 +22,7 @@ if(EXISTS ${SOURCE_DIR}/.git)
        if(MY_WC_BRANCH STREQUAL "HEAD")
                # Detached HEAD, check whether commit hash is reachable
                # in the master branch
-               execute_process(COMMAND git rev-parse --short HEAD
+               execute_process(COMMAND git rev-parse --short=12 HEAD
                                WORKING_DIRECTORY ${SOURCE_DIR}
                                OUTPUT_VARIABLE MY_WC_HASH
                                OUTPUT_STRIP_TRAILING_WHITESPACE)
@@ -80,12 +80,12 @@ if(EXISTS ${SOURCE_DIR}/.git)
                if(NOT _git_below_check STREQUAL "")
                        # If there're commits between HEAD and upstream this means
                        # that we're reset-ed to older revision. Use it's hash then.
-                       execute_process(COMMAND git rev-parse --short HEAD
+                       execute_process(COMMAND git rev-parse --short=12 HEAD
                                        WORKING_DIRECTORY ${SOURCE_DIR}
                                        OUTPUT_VARIABLE MY_WC_HASH
                                        OUTPUT_STRIP_TRAILING_WHITESPACE)
                else()
-                       execute_process(COMMAND git rev-parse --short @{u}
+                       execute_process(COMMAND git rev-parse --short=12 @{u}
                                        WORKING_DIRECTORY ${SOURCE_DIR}
                                        OUTPUT_VARIABLE MY_WC_HASH
                                        OUTPUT_STRIP_TRAILING_WHITESPACE
@@ -94,7 +94,7 @@ if(EXISTS ${SOURCE_DIR}/.git)
                        if(MY_WC_HASH STREQUAL "")
                                # Local branch, not set to upstream.
                                # Well, let's use HEAD for now
-                               execute_process(COMMAND git rev-parse --short HEAD
+                               execute_process(COMMAND git rev-parse --short=12 HEAD
                                                WORKING_DIRECTORY ${SOURCE_DIR}
                                                OUTPUT_VARIABLE MY_WC_HASH
                                                OUTPUT_STRIP_TRAILING_WHITESPACE)
index 2408e4e..fb69a7c 100644 (file)
@@ -26,7 +26,7 @@ if(EXISTS ${CMAKE_SOURCE_DIR}/.git/)
        find_package(Git)
        if(GIT_FOUND)
                # message(STATUS "Found Git: ${GIT_EXECUTABLE}")
-               execute_process(COMMAND git rev-parse --short HEAD
+               execute_process(COMMAND git rev-parse --short=12 HEAD
                                WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
                                OUTPUT_VARIABLE MY_WC_HASH
                                OUTPUT_STRIP_TRAILING_WHITESPACE