用于自动提交和增加内部版本号的脚本

时间:2016-04-09 02:11:59

标签: git bash

我想在每次成功构建后自动使用增加的内部版本号进行新的提交。

我使用这种未经跟踪的自我修改脚本:

let N=`tail -n 1 $0`+1
sed -i '' "5s/.*/$N/" $0
echo $N
exit 0
0

在每次调用时,它会增加最后一行的数字并回显它,并且作为我的makefile的一部分,我这样做:

git commit -m "build `sh script.sh`"

对此有更好,更优雅的解决方案吗?我的解决方案可能会出现哪些问题?

编辑:

感谢您的评论。我已经过度思考了这一点,并会看看建议的其他方法。

2 个答案:

答案 0 :(得分:2)

最好将构建保留在自己的文本文件中,并使用于维护文件的脚本保持不变而不是更改它。

#!/bin/bash

# Initialize build.txt if it doesn't exist
if [[ ! -f build.txt ]]; then
    echo 0 >> build.txt
fi
let build=$(cat build.txt)+1
echo $build > build.txt
echo $build

不写自修改代码的原因?它更难以推理,看起来它自我修改的事实是阻止你检查它。另外根据我的经验,一个错误最终可能会将脚本缩减为空文件。 See also

那就是说,我认为你应该利用Jenkins之类的东西来管理你的构建号码。它不会使提交跟踪成功的构建,但界面将显示成功和不成功的构建。

我反对一般自动提交,当然在这种情况下你的版本历史会变得混乱,因此无法看到真正的变化。同样,Jenkins这样的工具会以更合适的方式向您提供这些信息,而这正是我期望找到的。

答案 1 :(得分:2)

如果您标记您的版本(无论如何这是一个好主意),您只需使用git describe --tags生成内部版本号。

来自我自己的一个存储库的示例;

> git describe --tags
1.10-99-g6928bd0

这意味着在标记1.10之后,已完成99次提交。 HEAD的简短commit-id为6928bd0

如果你不想要HEAD,你可以做类似的事情;

> git describe --tags | awk -F '-' 'BEGIN {OFS="-"} {print $1, $2}'
1.10-99