之前使用的是svn,svn每次提交的版本号是一个数字,用来作为内部版本号,确定打出的包所对应的代码库版本。
后来换到git,发现git每一次commit的版本号是个哈希值。如果想要继续使用数字作为版本号的话,也是可以的,只需要计算出commit的次数就可以了。
获取所有分支的提交:
git rev-list --all|wc -l
把--all
替换为HEAD
,就可以获取当前分支的提交次数了。
其实使用commit的哈希值作为版本号也是可以的,获取最新的一次提交的哈希值的前七个字符(应该够用了),
这样:
git rev-list HEAD --abbrev-commit --max-count=1
这篇文章,是如何把git提交次数作为app的内部版本号的。
但是原文有个问题,使用了CFBundleShortVersionString
,这个应该是应用的版本号,比如2.1
、3.0
,这里其实应该设置的是build号,应该使用CFBundleVersion
。
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion `git rev-list HEAD | wc -l | awk '{print $1}'`" "${TARGET_BUILD_DIR}"/${INFOPLIST_PATH}
这里用到了PlistBuddy
,这是个可以对plist文件进行读写的工具,终端中执行/usr/libexec/PlistBuddy -h
就可以查看其帮助了。
对于创建framework的工程,没有info.plist文件,只能自己设置了。如下:
FMK_NAME=MAMapKit
FMK_GIT=`git rev-list HEAD --abbrev-commit --max-count=1`
FMK_VERSION="2.5.0.${FMK_GIT}"
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
注:以上脚本需要放到target的Run Script中去执行
网友评论