From f0e29217d048430335234e5a1ea3c9b1fbb8eefa Mon Sep 17 00:00:00 2001 From: Christian Lauinger Date: Thu, 30 Jul 2026 11:23:00 +0200 Subject: [PATCH 1/2] Fix Git version detection when embedded --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a5d3c13..7a631e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,6 +87,7 @@ if(DEFINED HEADSETCONTROL_VERSION AND HEADSETCONTROL_VERSION) else() execute_process( COMMAND git describe --tags --dirty=-modified + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET @@ -97,6 +98,7 @@ else() if(NOT GIT_VERSION OR NOT GIT_RESULT EQUAL 0) execute_process( COMMAND git rev-parse --short HEAD + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET From 8c6530c65dc6f1e55809e65edbf80b2b8d3d3af5 Mon Sep 17 00:00:00 2001 From: Christian Lauinger Date: Thu, 30 Jul 2026 11:29:24 +0200 Subject: [PATCH 2/2] Reject parent repository version metadata --- CMakeLists.txt | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a631e5..ab2ef82 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,27 +86,46 @@ if(DEFINED HEADSETCONTROL_VERSION AND HEADSETCONTROL_VERSION) set(GIT_VERSION "${HEADSETCONTROL_VERSION}") else() execute_process( - COMMAND git describe --tags --dirty=-modified + COMMAND git rev-parse --show-toplevel WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" - OUTPUT_VARIABLE GIT_VERSION + OUTPUT_VARIABLE GIT_TOP_LEVEL OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET RESULT_VARIABLE GIT_RESULT ) - - # Fallback if git describe fails (no tags, shallow clone, etc.) - if(NOT GIT_VERSION OR NOT GIT_RESULT EQUAL 0) + get_filename_component(HEADSETCONTROL_SOURCE_DIR_REAL + "${PROJECT_SOURCE_DIR}" REALPATH) + get_filename_component(GIT_TOP_LEVEL_REAL "${GIT_TOP_LEVEL}" REALPATH) + + # Do not derive the version from a parent repository when this source tree is + # vendored without its own Git metadata. + if(NOT GIT_RESULT EQUAL 0 + OR NOT GIT_TOP_LEVEL_REAL STREQUAL HEADSETCONTROL_SOURCE_DIR_REAL) + set(GIT_VERSION "0.0.0-unknown") + else() execute_process( - COMMAND git rev-parse --short HEAD + COMMAND git describe --tags --dirty=-modified WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" - OUTPUT_VARIABLE GIT_HASH + OUTPUT_VARIABLE GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET + RESULT_VARIABLE GIT_RESULT ) - if(GIT_HASH) - set(GIT_VERSION "0.0.0-${GIT_HASH}") - else() - set(GIT_VERSION "0.0.0-unknown") + + # Fallback if git describe fails (no tags, shallow clone, etc.) + if(NOT GIT_VERSION OR NOT GIT_RESULT EQUAL 0) + execute_process( + COMMAND git rev-parse --short HEAD + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" + OUTPUT_VARIABLE GIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) + if(GIT_HASH) + set(GIT_VERSION "0.0.0-${GIT_HASH}") + else() + set(GIT_VERSION "0.0.0-unknown") + endif() endif() endif() endif()