You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:06:03