2

在 svn 中,我们曾经使用部署后的钩子将部署的版本签入号写入已部署的应用程序版本的构建后缀。

即,如果我们正在部署应用程序的 3.0 版本,应用程序中的 about 窗口将显示 3.0.1234,其中 1234 是来自 svn 的构建版本。

这使 QA 可以查看修订号并查看已解决的错误,比较已解决错误中的内部版本号,如果部署的应用程序的修订版高于错误报告中的修订版,他们将确保修复已部署(或未部署) .

使用 git 和 mercurial,修订哈希不提供类似的功能。你们如何使用 git 解决这个问题?

4

3 回答 3

1

您可以在 Git 中使用标签挂钩。标签用于版本控制,以及其他目的。

您甚至可以使用哈希本身进行版本控制,例如,参见 Debian:一些软件包具有版本字符串,例如4.8.5+git121-g2a9ea11. 为什么不正常?

于 2013-10-26T15:36:19.683 回答
1

使用git describe. 输出看起来像这样:v5.19.5-55-ga854082,一个由三部分组成的 committish:v5.19.5是当前分支中的最新标签,55是自该标签以来的提交次数,并且ga854082是一个缩写 SHA1,前面带有g. 提交的数量可用于检查是否有更新。

git describe上面的输出实际上是来自 perl 源代码的真实示例)

于 2013-10-26T16:18:23.297 回答
0

我使用 post-checkout、post-commit、post-merge 和 post-rewrite 钩子:

M=2228.1
rev=`git rev-parse --verify --short HEAD`

b=$(git branch --no-color 2> /dev/null | \
    sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')

case $b in
  (_tmp*)
        cnt=`git rev-list "$M"..$rev -- | wc -l`

        printf '#define AUTO_REVISION TEST%u+%s\n' "$cnt" "$rev" > auto-version.h
        ...
        ;;
  (*)
        cnt=`git rev-list $rev -- | wc -l`

        printf '#define AUTO_REVISION g%05u+%s\n' "$cnt" "$rev" > auto-version.h
        ...
        ;;
esac

cat << EOF >> auto-version.mk
AUTO_REVISION_CNT = $cnt
AUTO_REVISION_REV = $rev
EOF

“cnt”变量包含自开始或某个分支/标签(在本例中为 2228.1)以来的提交次数,并根据实际分支(发布/测试)应用不同的方案。

于 2013-10-26T15:37:38.193 回答