自动 - 在将分支合并到 master 时增加 master 上的补丁版本

Auto - Increment patch version on master while merging branches to master

给定: Bitbucket 存储库,以及 2 个开发人员,Steve 和 Bob,他们正在 2 个分支上工作,feature/alpha & feature/beta。在 master 分支和功能分支上,我们有一个带有版本的属性文件 - 比如说 8.3.0.

如何... 确保在 Bob 或 Steve 将他们的 pull request 合并到 master 之后 master 上的补丁版本增加了?即:

寻找痛苦较小的解决方案。提前致谢!

更新 2020-12-07:

mnestorov 的回答经过一些修改后得到了预期的结果。不同之处在于我无权在服务器上添加预合并挂钩。如果有人遇到同样的问题 - 这是一个骇人听闻的收据:

通过这种方式,您将确保您的增量脚本将 运行 任何时候您的队友推动而无需请求 devops 的帮助:)

一种方法是创建一个 pre-merge-commit 挂钩并将其放置在您的 bitbucket 服务器上。

钩子可以测试很多东西,比如检查你要合并到哪个分支,但它也可以创建或附加指定版本的文件。基本上,它可以像这样简单:

假设您的 version.txt 看起来像这样:

version = 8.3.0

然后你可以有这样的东西:

#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git merge" with no arguments.  The hook should
# exit with non-zero status after issuing an appropriate message to
# stderr if it wants to stop the merge commit.
#
# To enable this hook, rename this file to "pre-merge-commit".

echo "Bumping Service version"

OLD_VERSION=$(cat version.txt | grep -o "=.*" | tr -d '= ')
NEW_NUM=$(( $(echo $OLD_VERSION | grep -o "\.[0-9]*$" | tr -d ".") + 1 ))
LAST_NUM=$(echo $OLD_VERSION | grep -o "\.[0-9]*$" | tr -d ".")
NEW_VERSION=$(echo $OLD_VERSION | tr $LAST_NUM $NEW_NUM)

# More conversions to bump the version if needed
# more code code code
# ...

sed -i 's/\(^version = \).*/'"$NEW_VERSION"'/' ~/service/version/file/txt

当然,我只是在猜测它可能是什么以及它如何能够自动提升您拥有的 sub-sub 版本。但它绝对可以自动化并计算如何增加一个数字,不管它是什么。

注意:这个钩子不接受任何参数,所以你不能给它传递版本号。