当前位置: 首页 > wzjs >正文

8u免费空间衡阳seo优化首选

8u免费空间,衡阳seo优化首选,石龙做网站,新公司在哪做网站目录 概要 实现方案 概要 最近在用visual Studio 开发MFC项目时,需要在release版本编译后的exe文件自动追加版本信息。 由于我们用的git工程管理,即需要基于最新的git 提交来打版本。 比如: MFCApplication_V1.0.2_9.exe 由于git 提交信…

目录

概要

实现方案


概要

最近在用visual Studio 开发MFC项目时,需要在release版本编译后的exe文件自动追加版本信息。

由于我们用的git工程管理,即需要基于最新的git 提交来打版本。

比如: MFCApplication_V1.0.2_9.exe

由于git 提交信息是hash 记录,不便于看出不同版本时间先后顺序。这里不使用commit 记录。

换个思路,可用最新的commit  count 计数来区分版本。但这个是个纯数字。

如果用tag,可以写成任意样式,是个不错的思路。所以决定采用tag自加方式。

但是如果每笔commit 都打tag,感觉有点滥用tag了。故采用在正式出release版本编译时才让tag自加。

实现方案

获取下一个要打的tag 信息。

下面是一个根据当前tag 生成下一tag的脚本:get_next_tag.bat

REM 配置后可支持中文
chcp 65001
@echo off
::开启后以便让变量即时生效
setlocal enabledelayedexpansionset OUTPUT_FILE=build_tag_info.txt:: --------------------------------
:: 获取当前提交的 tag(如果有)
:: 场景:
:: 1.从未打过tag; 
:: 2. 当前提交不带tag;
:: 3. 当前提交就带tag 含反复编译情况。
:: :: --------------------------------
for /f "delims=" %%i in ('git tag --points-at HEAD') do (set COMMIT_TAG=%%i
)if "!COMMIT_TAG!"=="" (echo "head has no tag"
) else (echo "Current has tag, not need to increase"set NEXT_TAG=%COMMIT_TAG%REM @pausegoto save_info
):: 获取最后一个 tag, 命令用'""' 包含,防止不能识别=
for /f "delims=" %%i in ('"git describe --tags --abbrev=0"') do set LAST_TAG=%%i:: 去掉前缀V(如果有)
echo LAST_TAG=!LAST_TAG!
if "!LAST_TAG!"==""  (set MAJOR=1set MINOR=0set PATCH=0
) else (set TAG_CLEAN=%LAST_TAG:V=%echo "cur tag: !TAG_CLEAN! .need new tag:  ":: 拆分为主版本.次版本.补丁for /f "tokens=1,2,3 delims=." %%a in ("!TAG_CLEAN!") do (set MAJOR=%%aset MINOR=%%bset PATCH=%%c)echo "before PATCH=!PATCH!":: 如果 PATCH 为空,则设为 0if "!MAJOR!"=="" set MAJOR=1if "!MINOR!"=="" set MINOR=0if "!PATCH!"=="" set PATCH=0echo "PATCH=!PATCH!":: 补丁号 +1set /a PATCH+=1
)echo MAJOR=!MAJOR!
echo MINOR=!MINOR!
echo PATCH=!PATCH!:: 组合新的 tag
set NEW_TAG=V!MAJOR!.!MINOR!.!PATCH!:: 打印输出
echo LAST_TAG=%LAST_TAG%
set NEXT_TAG=!NEW_TAG!:: 提交tag 
git tag !NEXT_TAG!
git push origin --tags:: 输出调试信息
:save_info
echo NEXT_TAG=!NEXT_TAG!
REM echo BUILD_TIME=%BUILD_TIME%:: 保存到文件, ">"左边不要加空格,避免生成文件含空格
echo !NEXT_TAG!> "%OUTPUT_FILE%":: get git count
for /f "delims=" %%i in ('git rev-list --count HEAD') do set GIT_COUNT=%%i
echo GIT_COUNT: !GIT_COUNT!
echo !GIT_COUNT!>> "%OUTPUT_FILE%"endlocal

copy_files.bat

编译后,自动追加tag信息,并把要拷贝的文件拷贝到output目录下。

REM 配置后可支持中文
chcp 65001
@echo off
setlocal enabledelayedexpansionset "TargetPath=%~1"
set "ProjectDir=%~2"
set "TargetName=%~3"
set "TargetExt=%~4"
echo "TargetPath=%TargetPath%"
echo "ProjectDir=%ProjectDir%"
echo "TargetName=%TargetName%"
echo "TargetExt=%TargetExt%"
set GIT_RECORD_FILE=%ProjectDir%build_tag_info.txtset /p BUILD_TAG=<"%GIT_RECORD_FILE%"
echo BUILD_TAG=%BUILD_TAG%::读取第二行count计数
for /f "usebackq delims=" %%A in ("%GIT_RECORD_FILE%") do (set /a LINE_NUM+=1if !LINE_NUM! EQU 2 (set "SECOND_LINE=%%A"goto :findCount)
):findCount
SET GIT_COUNT=!SECOND_LINE!
echo "SECOND_LINE: !SECOND_LINE!"
echo "GIT_COUNT=!SECOND_LINE!"set "NEW_NAME=%TargetName%_!BUILD_TAG!_!SECOND_LINE!%TargetExt%"::copy 前先删除之前的目标文件,此时不能删除!TargetPath!代表的文件
set TARGET_ABS_PATH=!TargetPath!\..\!NEW_NAME!
echo ".............................Renaming to !TARGET_ABS_PATH!"
for %%f in (!TargetPath!\..\!TargetName!*.exe) do (REM 检查文件名是否不等于 !TargetName!.exeif /i not "%%f"=="!TargetPath!\..\!TargetName!.exe" (echo will delete %%fdel "%%f")
)REM 保存当前路径到环境变量
set PREV_PATH=%CD%
cd ..
if exist  .\output\!TargetName!*.exe      (del /S /Q output\!TargetName!*.exe)        else (md output\ )echo "...................start copy"
echo TargetPath=!TargetPath!
echo "NEW_NAME=!NEW_NAME!"
::需要重命名,不要使用xcopy
copy !TargetPath!                output\!NEW_NAME!  /Y::copy other files to Debug\Release 便于调试
xcopy Config.ini                 !TargetPath!\..  /D /Y::copy other files to output
xcopy Config.ini                 output\  /D /Y
xcopy README.md                output\  /D /Ycd /D %PREV_PATH%del  !GIT_RECORD_FILE!endlocal

最后在项目属性中——生成事件——生成后事件,为Release版本配置:

call "$(ProjectDir)get_next_tag.bat"
call "$(ProjectDir)copy_files.bat"  "$(TargetPath)" $(ProjectDir) "$(TargetName)" $(TargetExt)

大家可根据自己实际情况自行修改。

http://www.dtcms.com/wzjs/154997.html

相关文章:

  • 淘宝网站建设方式广点通推广登录入口
  • 做网站项目百度大数据分析
  • 网站建设管理情况说明台州seo
  • 建设网站的会计分录制作一个网站需要多少费用
  • 网站建设5000费用预算搜索引擎排名2021
  • 私服网站建设网络运营培训课程
  • 东莞企业网站建设推广腾讯与中国联通
  • 昵图网站党风廉政建设公众号怎么推广
  • 网站建设范文用网站模板建站
  • 武汉网站网站建设重大新闻事件
  • 做网站开发的有哪些公司好站长工具大全
  • 多软件网站下载安装做网站用什么软件好
  • 旅游网站制作建设网站推广的基本方法有
  • 企业网站的常见服务seo短视频加密路线
  • Wordpress网站转zblog汕头seo代理商
  • 漳州住房和城乡建设部网站网络营销专业学什么课程
  • 网站开发最新流程近几年的网络营销案例
  • 优推宝可以做自己网站吗十大跨界营销案例
  • 代办公司注册商务服务网络优化公司排名
  • 做网站和网页有什么区别网络营销是什么工作
  • 做企业网站后期还需要费用吗视频外链平台
  • 长春建站方案百度网页电脑版入口
  • 自助建站系统php搜索推广公司
  • wordpress环境需求百度seo推广价格
  • 服务型网站的营销特点5118网站如何使用免费版
  • 深圳企业高端网站建设适合发软文的平台
  • 国内做网站建设知名的公司日本比分预测
  • 动漫在线制作网站济南百度推广公司电话
  • b2c网站可分为百度公司电话是多少
  • 网站工作室 需要什么手续网络优化公司哪家好