Delphi应用编译构建阶段获取Git分支、版本号等数据的方法问询
实现思路
核心逻辑是在项目编译前自动执行Git命令拉取当前仓库的版本信息,写入到一个固定的Delphi单元文件中,项目直接引用该单元读取常量即可,全程不需要手动修改,每次编译自动更新数据。
具体实现步骤
- 第一步:编写预编译执行脚本
在项目根目录新建脚本文件UpdateGitInfo.bat,内容如下,作用是拉取Git信息并自动生成GitInfo.pas单元:@echo off setlocal enabledelayedexpansion :: 读取Git相关信息 for /f "delims=" %%a in ('git rev-parse --abbrev-ref HEAD') do set GIT_BRANCH=%%a for /f "delims=" %%a in ('git rev-parse --short HEAD') do set GIT_COMMIT_SHORT=%%a for /f "delims=" %%a in ('git rev-parse HEAD') do set GIT_COMMIT_FULL=%%a set GIT_TAG=No tag for /f "delims=" %%a in ('git describe --tags --abbrev=0 2^>nul') do set GIT_TAG=%%a :: 输出到Delphi单元文件 echo unit GitInfo; > GitInfo.pas echo interface >> GitInfo.pas echo const >> GitInfo.pas echo GIT_BRANCH = '!GIT_BRANCH!'; >> GitInfo.pas echo GIT_COMMIT_SHORT = '!GIT_COMMIT_SHORT!'; >> GitInfo.pas echo GIT_COMMIT_FULL = '!GIT_COMMIT_FULL!'; >> GitInfo.pas echo GIT_TAG = '!GIT_TAG!'; >> GitInfo.pas echo implementation >> GitInfo.pas echo end. >> GitInfo.pas - 第二步:配置Delphi预编译事件
打开Delphi项目,点击菜单栏 项目 -> 选项 -> 构建事件 -> 预生成事件,在「命令」输入框填入$(PROJECTDIR)\UpdateGitInfo.bat,保存配置后每次编译项目前都会自动执行脚本更新版本信息。 - 第三步:展示版本信息
在帮助弹窗对应的单元uses列表中引入GitInfo,直接调用单元内的常量拼接展示文本即可,示例代码:lblVersion.Caption := '版本号:' + GIT_TAG + sLineBreak + '分支:' + GIT_BRANCH + sLineBreak + '提交ID:' + GIT_COMMIT_SHORT;
注意事项
- 需提前将Git添加到系统环境变量,可在cmd执行
git --version验证配置是否生效,否则脚本会执行失败 - 建议把自动生成的
GitInfo.pas添加到.gitignore文件中,不需要提交到仓库,避免多人开发时出现文件冲突 - 如果需要额外的Git信息比如提交时间、提交人等,可在脚本中新增对应Git命令,在
GitInfo.pas里新增对应常量即可
内容的提问来源于stack exchange,提问作者Franz
相关产品推荐
相关产品推荐

