在Git存储库中保留“硬编码”版本号的最佳方法

时间:2018-06-01 00:24:39

标签: git version-control

我在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状态显示为未跟踪文件。处理这个问题的最佳方法是什么?

1 个答案:

答案 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"