mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-25 22:01:01 +00:00
59 lines
1.3 KiB
CMake
59 lines
1.3 KiB
CMake
# Git utilities
|
|
|
|
if(__GitUtilities)
|
|
return()
|
|
endif()
|
|
|
|
set(__GitUtilities ON)
|
|
|
|
macro(_git_command)
|
|
execute_process(
|
|
COMMAND "${GIT_EXECUTABLE}" ${ARGN}
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
OUTPUT_VARIABLE output
|
|
ERROR_QUIET
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
endmacro()
|
|
|
|
macro(_git_easy_command)
|
|
_git_command(${ARGN})
|
|
set(${variable} "${output}" PARENT_SCOPE)
|
|
endmacro()
|
|
|
|
function(git_current_branch variable)
|
|
_git_command(symbolic-ref -q --short HEAD)
|
|
|
|
# If a detached head, a ref could still be resolved.
|
|
if("${output}" STREQUAL "")
|
|
_git_command(describe --all --exact-match)
|
|
|
|
# Get the ref, in the form heads/master or
|
|
# remotes/origin/master so isolate the final part.
|
|
string(REGEX REPLACE ".*/" "" output "${output}")
|
|
endif()
|
|
|
|
set(${variable} "${output}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(git_latest_commit variable)
|
|
_git_easy_command(rev-parse --short HEAD)
|
|
endfunction()
|
|
|
|
function(git_working_tree_dirty variable)
|
|
_git_command(status --porcelain -uno)
|
|
|
|
if(output STREQUAL "")
|
|
set(${variable} FALSE PARENT_SCOPE)
|
|
else()
|
|
set(${variable} TRUE PARENT_SCOPE)
|
|
endif()
|
|
endfunction()
|
|
|
|
function(git_subject variable)
|
|
_git_easy_command(log -1 --format=%s)
|
|
endfunction()
|
|
|
|
function(get_git_dir variable)
|
|
_git_easy_command(rev-parse --git-dir)
|
|
endfunction()
|