让我们想象一下,blerp 命令行工具在 git 上得到维护。该工具有一个(隐藏的)
版本和提交号都是硬编码到代码库中的。
现在我进行了一个 bugfix,然后提交并重新构建我的程序。尽管这个新版本与原始的
一种解决方案是每次提交时增加硬编码版本号(这意味着每次提交至少修改两个文件)。这是一种约束性的解决方案,当开发人员在不同的活动分支上工作时无法使用。如果Bob从版本0.1.2开始使用功能
另一种解决方案是使用Git标签自动生成版本号。脚本可以找到以
有什么可能的替代方案来解决这个问题?
--version
选项,返回其 版本(假设为 0.1.2
),还有另一个 --commit
,返回它构建时的提交号。版本和提交号都是硬编码到代码库中的。
现在我进行了一个 bugfix,然后提交并重新构建我的程序。尽管这个新版本与原始的
0.1.2
不同,但我仍然会看到 0.1.2
。只有提交才会告诉我它不是相同的 0.1.2
。这个 bugfix 值得一个不同的版本号吗?一种解决方案是每次提交时增加硬编码版本号(这意味着每次提交至少修改两个文件)。这是一种约束性的解决方案,当开发人员在不同的活动分支上工作时无法使用。如果Bob从版本0.1.2开始使用功能
foo
,而Alice从相同版本的功能bar
开始工作,他们如何增加版本号?Bob可以使用奇数,而Alice可以使用偶数。如果Eve正在开发第三个功能呢?另一种解决方案是使用Git标签自动生成版本号。脚本可以找到以
v
开头的最接近的标签,例如v0.1.2
,并将标签名称用作版本号加上当前提交的前n位数字(v0.1.2(build 4acd21)
)。如果工作目录干净,则此方法有效。可以想象在构建号之前添加*
以表示工作目录不干净。此解决方案的主要问题是如果有人导出源代码,则无法构建blerp。有什么可能的替代方案来解决这个问题?
blerp
的版本号是什么? - nowox