语义版本控制,用 2 个字节标识提交
Sematic versionning, identify commit with 2 bytes
我有以下版本编号的嵌入式软件:
<产品编号>.<主要>.
- Product Number任意设置,对应每个软件
- major是任意设置的,随着软件的major演进而递增
- 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
.
当然,您始终可以选择在发布标签名称中使用该编号。
我有以下版本编号的嵌入式软件:
<产品编号>.<主要>.
- Product Number任意设置,对应每个软件
- major是任意设置的,随着软件的major演进而递增
- SVN 提交编号随每次提交递增
问题是我们从 svn 切换到 git 并且我们丢失了被 SHA“替换”的 SVN 提交号。
因此,我们可以用
是否有另一种方法来考虑提交的版本编号?
如果您接受哈希仅由 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
.
当然,您始终可以选择在发布标签名称中使用该编号。