我想自动将版本号设置为我的程序,这样它们与git标签一致。怎么做到这一点?建议的方法是什么?
以下高度复杂的python脚本打印其版本号。每次提交时我应该如何自动更新该版本号?
# application.py
hardcoded_version_number = "0"
print("v"+hardcoded_version_number)
每次提交后,应更新版本号。
发布0.1 /初始提交:
hardcoded_version_number = "0.1"
print("v"+hardcoded_version_number)
功能1:
hardcoded_version_number = "0.1-1-gf5ffa14" # or something like this
print("v"+hardcoded_version_number)
发布0.2:
hardcoded_version_number = "0.2"
print("v"+hardcoded_version_number)
等...
我目前的另一个问题是我使用的GUI元素无法在运行时从任何外部源读取版本号。所以我只有选择硬编码。
答案 0 :(得分:2)
在为这些版本生成名称方面,我认为您走的正确。 git describe
会生成与您正在寻找的形式完全相符的字符串:
该命令查找可从提交访问的最新标记。如果标记指向提交,则仅显示标记。否则,它将标记名称后缀为标记对象顶部的附加提交数和最近提交的缩写对象名称。
如果您想从代码中访问此版本字符串,您基本上有两个选项:
在构建阶段使用git describe
提取它。在这种情况下,您可能希望将其写入未跟踪的临时文件,然后可以将其读入您的程序在运行时。我使用过这种方法,效果很好。
使用.gitattributes
filter涂抹并清理文件。我自己从未使用过这种方法,但实质上这是一种工作副本中的文件可以自动生成的方式从存储库中的相同文件修改。
为什么这些必要?好吧,Git不会让你自己写一个提交的哈希。提交哈希是基于许多事物计算的,包括文件内容,提交消息,时间戳和父哈希。当您知道哈希是什么时,它引用的提交被有效锁定。修改其内容或提交消息以包含其哈希会使旧哈希无效。
有关详细讨论,请参阅this question。