Mercurial 带龟甲的强制版本号
我们有一个在Mercurial版本控制下的Java应用程序。我们正在致力于在应用程序中实现一个新的应用程序,我想知道TortoiseHG如何帮助实现这一点。是否可以在提交时增加构建版本,或者这必须完全由开发人员决定?我们目前的计划包括在推送到UAT时为每个版本号创建书签。原则上,您必须在OrtoisehG之外完成这项工作-Mercurial(因此也是OrtoisehG)的工作是保持您的工作副本的状态与您单击“提交”时的状态完全相同 不过,你可能会得到一些帮助:乌龟可以通过一个简单的动作触发这个“外部”动作。这是在运行Mercurial 带龟甲的强制版本号,mercurial,versioning,Mercurial,Versioning,我们有一个在Mercurial版本控制下的Java应用程序。我们正在致力于在应用程序中实现一个新的应用程序,我想知道TortoiseHG如何帮助实现这一点。是否可以在提交时增加构建版本,或者这必须完全由开发人员决定?我们目前的计划包括在推送到UAT时为每个版本号创建书签。原则上,您必须在OrtoisehG之外完成这项工作-Mercurial(因此也是OrtoisehG)的工作是保持您的工作副本的状态与您单击“提交”时的状态完全相同 不过,你可能会得到一些帮助:乌龟可以通过一个简单的动作触发这个“
hg commit
之前运行的脚本,该脚本有机会更改文件
当您尝试实施这样一个方案时,请记住Mercurial是一个分散的版本控制系统(这一点也不奇怪…),因此人们在本地进行提交,而无需与中央服务器进行通信。因此,无法保证其他人没有使用版本号。唯一的解决方法是使用变更集散列作为版本“编号”,但这样您就无法很好地增加编号。如果您有一个集中式构建服务器,那么您可以让它增加版本号,然后返回到一个简单的集中式世界视图
最后,我要提到的是,Mercurial有一个对集中式构建机器非常有用的方法:它计算到最新标记的距离,而这个距离在构建机器上通常是单调增加的。像这样使用它
hg parents --template "{latesttag}+{latesttagdistance}-{node|short}"
有关更多信息,请参阅。最好让生成系统在分发存档和/或文件名中插入当前版本标识符 第一个问题是,如何获取此版本标识符。基本上有三种方式:
hgid
命令来查找构建错误版本
文件,该文件由变更组
钩子填充版本
文件。(不推荐!)版本
文件时,采用方法1。为了更好地支持hg archive
源代码导出,您还可以检查.hg\u archive.txt
文件
第二个问题是,构建编号使用哪种值:
hgid-i
)hg id-n
)latesttag
和latesttagdistance
的标识符,参见Martin的答案