Git 用于自动提交和增加生成数的脚本

Git 用于自动提交和增加生成数的脚本,git,bash,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`" 有更好更优雅的解决方案吗?我的解决方案可能会出现哪些问题 编辑: 谢谢你的评论。我已经仔细考虑了一下这个问题

我希望在每次成功构建之后自动进行新的提交,并增加构建数量

我使用此未跟踪的自修改脚本:

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`"
有更好更优雅的解决方案吗?我的解决方案可能会出现哪些问题

编辑:


谢谢你的评论。我已经仔细考虑了一下这个问题,并将研究建议的其他方法。

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

#!/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
不编写自修改代码的原因?这更难解释,因为它的自我修改功能让你无法登录。根据我的经验,一个bug可能会导致脚本变成一个空文件

也就是说,我认为您应该利用类似的工具来为您管理构建数量。它不会使提交跟踪成功的构建,但界面将显示成功和不成功的构建

一般来说,我反对自动提交,当然在这种情况下,您的版本历史将变得混乱,无法看到真正的更改。同样,像Jenkins这样的工具将以更合适的方式向您提供这些信息,这也是我希望找到的地方。

如果您标记您的发行版(无论如何这是一个好主意),您可以使用
git descripe--tags
生成一个版本号

我自己的一个仓库中的一个例子

> git describe --tags
1.10-99-g6928bd0
这意味着在标记
1.10
之后,完成了99次提交。HEAD的短提交id是
6928bd0

如果你不想要脑袋,你可以这样做

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

看起来每当你想发布“发布”时都会用到这个?当您想要发布时,使用
git-tag
添加标签怎么样。然后,只需将标记版本包含在提交消息中,作为发布(也可以通过脚本完成)有趣的解决方案,我建议不要硬编码sed的行号,因为它可能会在以后的修改中覆盖其中一个脚本行<代码>sed“$s/*/'”$N“/'可以。或者在每次生成时执行提交,但仅在生成成功时更新引用。然后您可以使用git descripe输出。在内部版本中。您可能需要像
(主要版本)。(次要版本)。(修订号)。(内部版本号)
或至少
(主要版本)。(次要版本)
。提交未更改的代码将导致从属项目的额外工作,并查找导致生产问题的版本/文件/日期。