diff --git a/Tools/px_update_git_header.py b/Tools/px_update_git_header.py index 366a69020a..47e31de09f 100755 --- a/Tools/px_update_git_header.py +++ b/Tools/px_update_git_header.py @@ -17,6 +17,11 @@ git_tag = subprocess.check_output('git describe --always --tags'.split(), stderr=subprocess.STDOUT).decode('utf-8').strip() git_version = subprocess.check_output('git rev-parse --verify HEAD'.split(), stderr=subprocess.STDOUT).decode('utf-8').strip() +try: + git_branch_name = subprocess.check_output('git symbolic-ref -q --short HEAD'.split(), + stderr=subprocess.STDOUT).decode('utf-8').strip() +except: + git_branch_name = '' git_version_short = git_version[0:16] nuttx_git_tag = subprocess.check_output('git describe --always --tags'.split(), cwd='NuttX/nuttx', stderr=subprocess.STDOUT).decode('utf-8').strip().replace("nuttx-","v") @@ -36,14 +41,18 @@ header = """ #define PX4_GIT_VERSION_STR "{git_version}" #define PX4_GIT_VERSION_BINARY 0x{git_version_short} #define PX4_GIT_TAG_STR "{git_tag}" +#define PX4_GIT_BRANCH_NAME "{git_branch_name}" + #define NUTTX_GIT_VERSION_STR "{nuttx_git_version}" #define NUTTX_GIT_VERSION_BINARY 0x{nuttx_git_version_short} #define NUTTX_GIT_TAG_STR "{nuttx_git_tag}" + #define MAVLINK_LIB_GIT_VERSION_STR "{mavlink_git_version}" #define MAVLINK_LIB_GIT_VERSION_BINARY 0x{mavlink_git_version_short} """.format(git_tag=git_tag, git_version=git_version, git_version_short=git_version_short, + git_branch_name=git_branch_name, nuttx_git_version=nuttx_git_version, nuttx_git_version_short=nuttx_git_version_short, nuttx_git_tag=nuttx_git_tag, diff --git a/src/lib/version/version.c b/src/lib/version/version.c index 836cca3ebf..347e1a9a1d 100644 --- a/src/lib/version/version.c +++ b/src/lib/version/version.c @@ -156,6 +156,11 @@ uint32_t px4_firmware_version(void) return version_tag_to_number(PX4_GIT_TAG_STR); } +const char *px4_firmware_git_branch(void) +{ + return PX4_GIT_BRANCH_NAME; +} + uint32_t px4_board_version(void) { #if defined(__PX4_NUTTX) diff --git a/src/lib/version/version.h b/src/lib/version/version.h index 8a28f336e9..d069350398 100644 --- a/src/lib/version/version.h +++ b/src/lib/version/version.h @@ -118,6 +118,12 @@ __EXPORT const char *px4_toolchain_version(void); */ __EXPORT const char *px4_firmware_version_string(void); +/** + * get the git branch name (can be empty, for example if HEAD points to a tag) + */ +__EXPORT const char *px4_firmware_git_branch(void); + + /** * Firmware version in binary form (first part of the git tag) */ diff --git a/src/modules/logger/logger.cpp b/src/modules/logger/logger.cpp index 3d73fecfe1..42aff41be4 100644 --- a/src/modules/logger/logger.cpp +++ b/src/modules/logger/logger.cpp @@ -1656,6 +1656,12 @@ void Logger::write_version() write_info("sys_os_name", px4_os_name()); const char *os_version = px4_os_version_string(); + const char *git_branch = px4_firmware_git_branch(); + + if (git_branch && git_branch[0]) { + write_info("ver_sw_branch", git_branch); + } + if (os_version) { write_info("sys_os_ver", os_version); }