打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SVN、GIT生成版本号 | 迟思堂工作室

GIT生成编译版本号脚本:

# file name: git_local_ver_build.sh
#!/bin/bash
VER_FILE=version.h
LOCALVER=`git rev-list HEAD | wc -l | awk ‘{print $1}’`
echo “LOCALVER:” $LOCALVER
VER=r$LOCALVER
VER=“$VER $(git rev-list HEAD -n 1 | cut -c 1-7)”
GIT_VERSION=$VER
echo “Generated” $VER_FILE
echo “#ifndef PROJECT_VERSION_H” > $VER_FILE
echo “#define PROJECT_VERSION_H” >> $VER_FILE
echo “” >> $VER_FILE
echo “#define VERSION_NUMBER \”$GIT_VERSION\“” >> $VER_FILE
echo “” >> $VER_FILE
echo “#endif” >> $VER_FILE
echo “Job done!!”

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

#ifndef PROJECT_VERSION_H
#define PROJECT_VERSION_H
#define VERSION_NUMBER “r16 d51f6f0″
#endif

补记:可以在版本号添加分支名称,语句如下:

BRANCH=`git branch | awk ‘{if ($1==”*”) print $2}’`
GIT_VERSION=”$VER $BRANCH”

另一个较复杂的GIT生成编译版本号脚本:

# file name: git_build_version.sh
#!/bin/bash
VER_FILE=version.h
git rev-list HEAD | sort > config.git-hash
LOCALVER=`wc -l config.git-hash | awk ‘{print $1}’`
echo “LOCALVER:” $LOCALVER
if [ $LOCALVER \> 1 ]  ; then
VER=`git rev-list origin/master | sort | join config.git-hash – | wc -l | awk ‘{print $1}’`
if [ $VER != $LOCALVER ]  ; then
VER=“$VER+$(($LOCALVER-$VER))”
fi
if git status | grep -q “modified:”  ; then
VER=“${VER}M”
fi
VER=“$VER $(git rev-list HEAD -n 1 | cut -c 1-7)”
GIT_VERSION=r$VER
else
GIT_VERSION=
VER=“x”
fi
rm -f config.git-hash
echo “VER: “ $VER
echo “GIT_VERSION: “ $GIT_VERSION
echo “Generated” $VER_FILE
echo “#ifndef PROJECT_VERSION_H” > $VER_FILE
echo “#define PROJECT_VERSION_H” >> $VER_FILE
echo “” >> $VER_FILE
echo “#define VERSION_NUMBER \”$GIT_VERSION\“” >> $VER_FILE
echo “” >> $VER_FILE
echo “#endif” >> $VER_FILE
echo “Job done!!”

这个脚本需要join命令的支持,在windows上join.exe命令需要msys-iconv-2.dll、msys-intl-8.dll动态库的支持。如果安装了MinGW,可以从安装目录中直接获取。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
用SVN的SubWCRev管理同步项目版本号
602,比较版本号
购买的阿里的ECS服务器,第一次装git
RAW FILE CONVERTER Ver.3.2.23.0 Installer for Windows 8 / 8.1 / 7 / Vista | Fujifilm Global
自动更新程序源码下载(C#.Net)
自动增加svn库版本号(转) Re: 在Makefile动态生成程序版本号的方法(转)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服