1

我有具有以下版本编号的嵌入式软件:

<产品编号>.<主要>.<SVN 提交编号>

  1. 产品编号任意设置,对应每个软
  2. Major 是任意设置的,它随着软件的主要演变而增加
  3. SVN 提交号随着每次提交而递增

问题是我们从 svn 交换到 git 并且我们丢失了被 SHA “替换”的 SVN 提交号。

因此,我们可以将 <SVN commit number> 替换为 <git commit SHA>。但是,我们不能这样做,因为最后一个版本号被限制为 2 个字节,并且 <git commit SHA> 通常被压缩为 3 个字节。

还有另一种考虑提交的版本编号方法吗?

4

2 回答 2

1

如果您接受仅由 2 个字节组成的散列的可能性,则可以使用命令的选项--abbrev=<n>git describe其中n是您想要的 git 散列的字节数。在您的情况下,它将是:

git describe --always --abbrev=2

请记住,有可能只有 2 个字节,您的哈希就不再是唯一的,即使它也与您的版本号相关,这是一个遥远的机会。需要该--always选项才能仅显示哈希。

于 2021-03-05T13:23:29.840 回答
1

您可以使用git rev-list --first-parent --count @在您的签出历史记录中获取第一父提交的计数,在发布标签中@获取该版本的计数。

如果您可以从您所在的产品和主要编号中计算出来,假设您有 143.3.9234 并且您维护产品 143,主要 3 作为wizzo-v3发布分支,您可以git rev-list --first-parent --reverse wizzo-v3 | awk NR==9234.

当然,总是可以选择在您的发布标签名称中使用该数字。

于 2021-03-05T15:14:42.883 回答