diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-09-05 14:49:02 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-09-05 15:03:14 +0200 |
commit | 883f6eeb361c481ca16b7fe640aad0c2a6fbd00c (patch) | |
tree | dbe9496203109ed17b50481fb06a8aef6a45aa92 | |
parent | 58162ae5513cb53f28f899dcc46d402de5cdbb19 (diff) |
Build: Fixed branch name displayed by appveyor binaries
(cherry picked from commit 85671f20d866797a5a401d714b183d07c55f8d83)
-rw-r--r-- | cmake/genrev.cmake | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/cmake/genrev.cmake b/cmake/genrev.cmake index 975c2962b11..1d334e393e9 100644 --- a/cmake/genrev.cmake +++ b/cmake/genrev.cmake @@ -26,7 +26,7 @@ else() if(GIT_EXECUTABLE) # Retrieve repository dirty status execute_process( - COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD -- + COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD -- WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE is_dirty ) @@ -42,8 +42,8 @@ else() # Append dirty marker to commit hash if(is_dirty) - set(rev_hash "${rev_hash}+") - endif() + set(rev_hash "${rev_hash}+") + endif() # And grab the commits timestamp execute_process( @@ -62,6 +62,36 @@ else() OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) + + # when ran on CI, repository is put in detached HEAD state, attempt to scan for known local branches + if(NOT rev_branch) + execute_process( + COMMAND "${GIT_EXECUTABLE}" for-each-ref --points-at=HEAD refs/heads "--format=%(refname:short)" + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + OUTPUT_VARIABLE rev_branch + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) + endif() + + # if local branch scan didn't find anything, try remote branches + if(NOT rev_branch) + execute_process( + COMMAND "${GIT_EXECUTABLE}" for-each-ref --points-at=HEAD refs/remotes "--format=%(refname:short)" + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + OUTPUT_VARIABLE rev_branch + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) + endif() + + # give up finding a name for branch, use commit hash + if(NOT rev_branch) + set(rev_branch ${rev_hash}) + endif() + + # normalize branch to single line (for-each-ref can output multiple lines if there are multiple branches on the same commit) + string(REGEX MATCH "^[^ \t\r\n]+" rev_branch ${rev_branch}) endif() # Last minute check - ensure that we have a proper revision |