语义版本控制,用 2 个字节标识提交

Sematic versionning, identify commit with 2 bytes

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

<产品编号>.<主要>.

  1. Product Number任意设置,对应每个软件
  2. major是任意设置的,随着软件的major演进而递增
  3. SVN 提交编号随每次提交递增

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

因此,我们可以用 替换 。但是,我们不能这样做,因为我们被限制为最后一个版本号为 2 个字节,而 通常被压缩为 3 个字节。

是否有另一种方法来考虑提交的版本编号?

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

git describe --always --abbrev=2

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

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

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

当然,您始终可以选择在发布标签名称中使用该编号。