SVN和Git代码管理工具版本号获取(数字版本号)

SVN和Git代码管理工具版本号获取(数字版本号)

代码管理较多的是使用svn、git这类的版本管理工具,版本号是一个重要的东西,自然地,如何让我们显式地看到版本号是十分重要的。一般地,会通过某种手段让当前代码的版本号声明为宏定义字符串,或打印在串口上,或传输到上位机显示。

这里介绍了svn和git的版本号生成方式。git采取提交次数的方式。

一、SVN数字版本号获取

SVNVersion.h是一个空的头文件,每次工程执行时将写入版本信息

#SVN Version此段代码写入pro工程文件,目的是每次编译时都自动获取版本信息
PRE_TARGETDEPS += SVNVersion.h
QMAKE_EXTRA_TARGETS += svnrevision
svnrevision.target = SVNVersion.h
svnrevision.commands = $$PWD/generateSVNVersion.sh
QMAKE_DISTCLEAN += $$svnrevision.target

以下为generateSVNVersion.sh脚本内容

#svn
#当前工程目录
work_path=$(dirname $(readlink -f $0))
echo $work_path
#SVN最后一次修改的版本号
version=`svn info ${work_path}| grep 'Last Changed Rev' | awk '{ print $4; }'`
echo $version
#生成头文件
VERSION_HEADER="${work_path}/SVNVersion.h"
echo "#ifndef SVNVERSION_H" >  $VERSION_HEADER
echo "#define SVNVERSION_H" >> $VERSION_HEADER
echo "/* This file is auto-generated by the build script. Do not modify it. */" >> $VERSION_HEADER
echo "#define SOURCE_CODE_VERSION $version" >> $VERSION_HEADER
echo "#endif" >> $VERSION_HEADER

二、Git版本号哈希值和提交次数(数字版本号)获取

#git Version此段代码写入pro工程文件,目的是每次编译时都自动获取版本信息
PRE_TARGETDEPS += GITVersion.h
gitrevision.target = GITVersion.h
gitrevision.commands = $$PWD/generateGITVersion.sh
QMAKE_EXTRA_TARGETS += gitrevision
QMAKE_DISTCLEAN += $$gitrevision.target

GIT的版本号是一个 40 位的 SHA-1 的哈希值,但我们不使用这个值作为版本号,r16比d51f6f0b5eb202bbe6204246187d35df43aa6ef8更容易看一些。我们先使用git rev-list HEAD命令打印所有GIT版本,再通过wc计数,得到的数字就是我们想要的版本号(万一版本号有10000个,不知道这样做好不好)。另外,我们在数字的版本号后面加上哈希值的前7位,这使得数字的版本号和哈希值的版本号对应起来。
————————————————
以下为generateGITVersion.sh脚本内容

#git
#当前工程目录
work_path=$(dirname $(readlink -f $0))
echo $work_path
VER_FILE="${work_path}/GITVersion.h"
LOCALVER=`git rev-list HEAD | wc -l | awk '{print $1}'`
echo "LOCALVER:" $LOCALVER
VER="$LOCALVER $(git rev-list HEAD -n 1 | cut -c 1-7)"
GIT_VERSION=$VER

echo "Generated" $VER_FILE
echo "#ifndef GIT_PROJECT_VERSION_H" > $VER_FILE
echo "#define GIT_PROJECT_VERSION_H" >> $VER_FILE
echo "" >> $VER_FILE
echo "#define VERSION_NUMBER \"$GIT_VERSION\"" >> $VER_FILE
echo "" >> $VER_FILE
echo "#endif" >> $VER_FILE

参考前辈文章:https://latelee.org/using-gnu-linux/generate-svn-git-version.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值