From 9eaec59bfc12bd3a59224be73f467f2ebaad55ac Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 19 May 2026 10:46:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=91=BD=E4=BB=A4=E8=A1=8C?= =?UTF-8?q?=E5=8F=82=E6=95=B0=EF=BC=9A-test=EF=BC=8C=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=B5=8B=E8=AF=95=E7=89=88=E6=9C=AC=E7=9A=84?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E7=89=88=E6=9C=AC=E4=BF=A1=E6=81=AF=EF=BC=8C?= =?UTF-8?q?=E5=A6=82pid.bid.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GitVer/GitVer.cpp | 26 +++++++++++++++++++++----- GitVer/GitVer_cli.cpp | 9 ++++++++- GitVer/GitVer_cli.h | 2 +- GitVer/GitVer_nuitka.cpp | 23 +++++++++++++++++++++-- 4 files changed, 51 insertions(+), 9 deletions(-) diff --git a/GitVer/GitVer.cpp b/GitVer/GitVer.cpp index 10dd7be..c5850ee 100644 --- a/GitVer/GitVer.cpp +++ b/GitVer/GitVer.cpp @@ -353,9 +353,9 @@ void PrintFullUsageExamples() _T("用法:\n") _T(" gitver (显示帮助后进入当前分支创建 tag 流程)\n") _T(" gitver rewrite [PEType可选]\n") - _T(" gitver setver [pid] [repoPath可选]\n") - _T(" gitver nuitkabuild [pid] [mainPy] [repoPath可选] [nuitka额外参数可选]\n") - _T(" gitver nuitkapydbuild [pid] [modulePy] [repoPath可选] [nuitka额外参数可选]\n") + _T(" gitver setver [pid] [repoPath可选] [-test可选]\n") + _T(" gitver nuitkabuild [pid] [mainPy] [repoPath可选] [-test可选] [nuitka额外参数可选]\n") + _T(" gitver nuitkapydbuild [pid] [modulePy] [repoPath可选] [-test可选] [nuitka额外参数可选]\n") _T("\n示例:\n") _T(" gitver\n") _T(" gitver rewrite\n") @@ -364,14 +364,18 @@ void PrintFullUsageExamples() _T(" gitver setver 5 E:\\Code\\OTH\\gitver\n") _T(" gitver setver 5\n") _T(" gitver setver 5 -f\n") + _T(" gitver setver 5 -test\n") _T(" gitver nuitkabuild 5 main.py\n") _T(" gitver nuitkabuild 5 main.py -f\n") + _T(" gitver nuitkabuild 5 main.py -test\n") _T(" gitver nuitkabuild 5 src\\app.py E:\\Code\\MyPyProj --standalone --output-dir=dist\n") _T(" gitver nuitkabuild 5 main.py --standalone -f\n") _T(" gitver nuitkapydbuild 5 module.py\n") _T(" gitver nuitkapydbuild 5 module.py -f\n") + _T(" gitver nuitkapydbuild 5 module.py -test\n") _T(" gitver nuitkapydbuild 5 src\\core.py E:\\Code\\MyPyProj --output-dir=dist\n") - _T("\n说明: nuitkabuild/nuitkapydbuild 中,-f 在额外参数开始前表示 gitver 选项;进入额外参数后会透传给 Nuitka。\n") + _T("\n说明: nuitkabuild/nuitkapydbuild 中,-f/-test 在额外参数开始前表示 gitver 选项;进入额外参数后会透传给 Nuitka。\n") + _T("-test: 将产品版本号的 major 和 minor 都置为 0(用于测试版本构建)。\n") _T("无参数时会读取当前分支最近三次 tag,并提示选择 major 加 1 或 minor 加 1,然后创建新 tag。\n"); _tprintf(_T("%s"), lpUsageText); @@ -575,7 +579,8 @@ int HandleSetVerCommand(int argc, TCHAR* argv[]) LPCTSTR lpRepoPath = NULL; BOOL bUseDefaultTagWhenMissing = FALSE; - int nRepoArgRet = ParseSetVerOptions(argc, argv, lpRepoPath, bUseDefaultTagWhenMissing); + BOOL bTestMode = FALSE; + int nRepoArgRet = ParseSetVerOptions(argc, argv, lpRepoPath, bUseDefaultTagWhenMissing, bTestMode); if (nRepoArgRet != 0) { return nRepoArgRet; @@ -598,6 +603,17 @@ int HandleSetVerCommand(int argc, TCHAR* argv[]) return nVersionRet; } + if (bTestMode) + { + int nDot1 = strProductVersion.Find(_T('.')); + int nDot2 = (nDot1 >= 0) ? strProductVersion.Find(_T('.'), nDot1 + 1) : -1; + if (nDot2 > nDot1) + { + strProductVersion = strProductVersion.Left(nDot2 + 1) + _T("0.0"); + } + _tprintf(_T("[test] 已将 major/minor 置零: ProductVersion=%s\n"), strProductVersion.GetString()); + } + _tprintf(_T("ProductVersion=%s\n"), strProductVersion.GetString()); _tprintf(_T("FileVersion=%s\n"), strFileVersion.GetString()); diff --git a/GitVer/GitVer_cli.cpp b/GitVer/GitVer_cli.cpp index f49e9f1..fedc629 100644 --- a/GitVer/GitVer_cli.cpp +++ b/GitVer/GitVer_cli.cpp @@ -10,10 +10,11 @@ void PrintInvalidRepoPathError(LPCTSTR lpRepoPath) _tprintf(_T(": ЧIJֿ· %s\n"), lpRepoPath == NULL ? _T("") : lpRepoPath); } -int ParseSetVerOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseDefaultTagWhenMissing) +int ParseSetVerOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseDefaultTagWhenMissing, BOOL& bTestMode) { lpRepoPath = NULL; bUseDefaultTagWhenMissing = FALSE; + bTestMode = FALSE; for (int i = 3; i < argc; ++i) { @@ -24,6 +25,12 @@ int ParseSetVerOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseD continue; } + if (strArg.CompareNoCase(_T("-test")) == 0) + { + bTestMode = TRUE; + continue; + } + if (lpRepoPath == NULL) { if (!PathIsDirectory(argv[i])) diff --git a/GitVer/GitVer_cli.h b/GitVer/GitVer_cli.h index a1eb5d1..9402603 100644 --- a/GitVer/GitVer_cli.h +++ b/GitVer/GitVer_cli.h @@ -1,5 +1,5 @@ #pragma once void PrintInvalidRepoPathError(LPCTSTR lpRepoPath); -int ParseSetVerOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseDefaultTagWhenMissing); +int ParseSetVerOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseDefaultTagWhenMissing, BOOL& bTestMode); int ParseRewriteOptions(int argc, TCHAR* argv[], int& nPEType, BOOL& bForceRewrite); diff --git a/GitVer/GitVer_nuitka.cpp b/GitVer/GitVer_nuitka.cpp index c36bdc3..82ef099 100644 --- a/GitVer/GitVer_nuitka.cpp +++ b/GitVer/GitVer_nuitka.cpp @@ -13,11 +13,12 @@ void PrintCommandUsageAndExamples(LPCTSTR lpCommand, LPCTSTR lpRequiredArgs, LPC const UINT DEFAULT_MAJOR_WHEN_NO_TAG_FOR_NUITKA = 1; const UINT DEFAULT_MINOR_WHEN_NO_TAG_FOR_NUITKA = 0; -static int ParseNuitkaOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseDefaultTagWhenMissing, CString& strExtraArgs) +static int ParseNuitkaOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseDefaultTagWhenMissing, CString& strExtraArgs, BOOL& bTestMode) { lpRepoPath = NULL; bUseDefaultTagWhenMissing = FALSE; strExtraArgs.Empty(); + bTestMode = FALSE; BOOL bExtraArgsStarted = FALSE; for (int i = 4; i < argc; ++i) @@ -33,6 +34,12 @@ static int ParseNuitkaOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL continue; } + if (!bExtraArgsStarted && strArg.CompareNoCase(_T("-test")) == 0) + { + bTestMode = TRUE; + continue; + } + if (!bExtraArgsStarted && lpRepoPath == NULL && !bOptionStyleArg && PathIsDirectory(argv[i])) { lpRepoPath = argv[i]; @@ -110,7 +117,8 @@ static int HandleNuitkaBuildCommandCore( LPCTSTR lpRepoPath = NULL; BOOL bUseDefaultTagWhenMissing = FALSE; CString strExtraArgs; - int nRepoArgRet = ParseNuitkaOptions(argc, argv, lpRepoPath, bUseDefaultTagWhenMissing, strExtraArgs); + BOOL bTestMode = FALSE; + int nRepoArgRet = ParseNuitkaOptions(argc, argv, lpRepoPath, bUseDefaultTagWhenMissing, strExtraArgs, bTestMode); if (nRepoArgRet != 0) { return nRepoArgRet; @@ -133,6 +141,17 @@ static int HandleNuitkaBuildCommandCore( return nVersionRet; } + if (bTestMode) + { + int nDot1 = strProductVersion.Find(_T('.')); + int nDot2 = (nDot1 >= 0) ? strProductVersion.Find(_T('.'), nDot1 + 1) : -1; + if (nDot2 > nDot1) + { + strProductVersion = strProductVersion.Left(nDot2 + 1) + _T("0.0"); + } + _tprintf(_T("[test] ԰汾: ProductVersion=%s\n"), strProductVersion.GetString()); + } + CString strNuitkaCmd; if (bBuildModule) {