From b69de65e78c0b720986acc3de44d9c8741a78f19 Mon Sep 17 00:00:00 2001 From: sech1 Date: Sun, 14 Sep 2025 16:27:26 +0200 Subject: [PATCH] Display git commit in version --- CMakeLists.txt | 2 ++ cmake/git.cmake | 29 +++++++++++++++++++++++++++++ src/util.cpp | 3 +++ 3 files changed, 34 insertions(+) create mode 100644 cmake/git.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c37e24..1a7c95e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -394,6 +394,8 @@ if (WIN32 AND (CMAKE_BUILD_TYPE STREQUAL "Release")) add_definitions(-DNDEBUG) endif() +include(cmake/git.cmake) + add_executable(${CMAKE_PROJECT_NAME} ${HEADERS} ${SOURCES}) if (STATIC_BINARY OR STATIC_LIBS) diff --git a/cmake/git.cmake b/cmake/git.cmake new file mode 100644 index 0000000..668e610 --- /dev/null +++ b/cmake/git.cmake @@ -0,0 +1,29 @@ +set(GIT_COMMIT "unknown") + +find_program(GIT_EXECUTABLE git) + +if (GIT_EXECUTABLE) + execute_process(COMMAND "${GIT_EXECUTABLE}" rev-parse --short=7 HEAD + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + RESULT_VARIABLE RET + OUTPUT_VARIABLE COMMIT + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if (RET EQUAL 0) + set(GIT_COMMIT "${COMMIT}") + + execute_process(COMMAND git status --porcelain + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + RESULT_VARIABLE RET + OUTPUT_VARIABLE GIT_UNSTAGED + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(GIT_UNSTAGED OR RET) + set(GIT_COMMIT "${GIT_COMMIT} (dirty)") + endif() + endif() +endif() + +message(STATUS "You are currently on commit ${GIT_COMMIT}") + +add_compile_definitions(GIT_COMMIT="${GIT_COMMIT}") diff --git a/src/util.cpp b/src/util.cpp index 840d4d1..d344542 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -74,6 +74,9 @@ const char* VERSION = "v" STR2(P2POOL_VERSION_MAJOR) "." STR2(P2POOL_VERSION_MIN #elif defined(_MSC_VER) " with MSVC/" STR2(_MSC_VER) #endif +#ifdef GIT_COMMIT +" from " GIT_COMMIT +#endif " on " __DATE__ ")"; std::string p2pool_version()