From 553a75c99628cd07c5d750cd62dfd590917920e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joshua=20Vanda=C3=ABle?= Date: Mon, 7 Apr 2025 13:01:32 +0200 Subject: [PATCH] ScmRevGen: Determine the commits ahead using upstream if possible --- CMake/ScmRevGen.cmake | 14 +++++++++++++- Source/Core/Common/make_scmrev.h.js | 17 +++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/CMake/ScmRevGen.cmake b/CMake/ScmRevGen.cmake index f842c8fa47..04683f3ea0 100644 --- a/CMake/ScmRevGen.cmake +++ b/CMake/ScmRevGen.cmake @@ -2,6 +2,18 @@ cmake_minimum_required(VERSION 3.13) # for revision info if(GIT_FOUND) + # Determine whether upstream/master exists + execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} ls-remote --heads upstream master + RESULT_VARIABLE UPSTREAM_RESULT + OUTPUT_VARIABLE UPSTREAM_OUTPUT + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(UPSTREAM_RESULT EQUAL 0 AND UPSTREAM_OUTPUT) + set(BASE_BRANCH "upstream/master") + else() + set(BASE_BRANCH "master") + endif() + # defines DOLPHIN_WC_REVISION execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse HEAD OUTPUT_VARIABLE DOLPHIN_WC_REVISION @@ -19,7 +31,7 @@ if(GIT_FOUND) OUTPUT_VARIABLE DOLPHIN_WC_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE) # defines DOLPHIN_WC_COMMITS_AHEAD_MASTER - execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD ^master + execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD ^${BASE_BRANCH} OUTPUT_VARIABLE DOLPHIN_WC_COMMITS_AHEAD_MASTER OUTPUT_STRIP_TRAILING_WHITESPACE) diff --git a/Source/Core/Common/make_scmrev.h.js b/Source/Core/Common/make_scmrev.h.js index b2ff644ecc..ef1c8a27a7 100644 --- a/Source/Core/Common/make_scmrev.h.js +++ b/Source/Core/Common/make_scmrev.h.js @@ -5,9 +5,18 @@ var outfile = "./scmrev.h"; var cmd_revision = " rev-parse HEAD"; var cmd_describe = " describe --always --long --dirty"; var cmd_branch = " rev-parse --abbrev-ref HEAD"; -var cmd_commits_ahead = " rev-list --count HEAD ^master"; var cmd_get_tag = " describe --exact-match HEAD"; +function RemoteBranchExists(remote) { + var cmd = gitexe + " ls-remote --heads " + remote + " master"; + try { + var output = wshShell.Exec(cmd).StdOut.ReadLine(); + return output.trim() !== ""; + } catch (e) { + return false; + } +} + function GetGitExe() { try @@ -92,8 +101,12 @@ function GetFileContents(f) } } -// get info from git var gitexe = GetGitExe(); + +var base_branch = RemoteBranchExists("upstream") ? "upstream/master" : "master"; +var cmd_commits_ahead = " rev-list --count HEAD ^" + base_branch; + +// get info from git var revision = GetFirstStdOutLine(gitexe + cmd_revision); var describe = GetFirstStdOutLine(gitexe + cmd_describe); var branch = GetFirstStdOutLine(gitexe + cmd_branch);