我在Github上有一个软件(一些脚本)。比如,有人通过直接链接下载软件(没有克隆,我不认为用户有Git)。如何在启动脚本时显示当前版本号?如果有人真正克隆了存储库,只需运行git describe即可。但是,正如我所说,我不想假设Git可用。
我只发现以下解决方案相当烦人且不好。我创建了一个post-commit和pre-commit hook,在存储库中保存文件version.txt,如下所示:
预提交:
#!/bin/sh
#####################################################
#hook for handling version.txt
#we get the current version number in the form x.y-h,
#extract x.y and write the next version number
#x.(y+1) to version.txt before push
#####################################################
VER=`git describe --long`
MAIN=`echo $VER | awk -F "-" '/1/ {print $1}'`
SUB=`echo $VER | awk -F "-" '/1/ {print $2}'`
SUBNEXT=$((SUB+1))
echo $MAIN-$SUBNEXT > version.txt
git add version.txt
发表提交:
#!/bin/bash
####################
#update version.txt
####################
git rm -q version.txt
VER=`git describe --long`
echo $VER > version.txt
令人讨厌的是,version.txt总是以git状态显示为未跟踪文件。处理这个问题的最佳方法是什么?
答案 0 :(得分:1)
将版本记录到git repo文件中的方法是对没有Git的用户唯一可用的访问权限(因为他们无法通过git命令读取版本)。
为了提高效率,你可以使用pre-push hook而不是pre-commit hook和post-commit hook 。
在pre-push hook中,您只需要使用最新版本更新version.txt
文件并提交更改。脚本如下:
#!/bin/sh
ver=$(git describe --long)
echo $ver > version.txt
git add version.txt
git commit -m 'update version.txt'
echo "update version successful"