使用TortoiseHG强制版本号

Web*_*net 4 versioning mercurial

我们在Mercurial版本控制下有一个Java应用程序.我们正在努力在应用程序中实现版本控制模式,我想知道TortoiseHG如何帮助解决这个问题.是否可以做一些事情,比如在提交时增加构建版本,或者这对于开发人员来说是否必须这样做?我们当前的计划包括在我们推送到UAT时为每个版本号创建书签.

Mar*_*ler 9

原则上,您必须在TortoiseHg之外执行此操作 - Mercurial(以及TortoiseHg)的工作是保留工作副本的状态,就像您单击"提交"时一样.

但是你可能会得到一些帮助:TortoiseHg可以通过预提交钩子触发这个"外部"动作.这是一个在运行之前hg commit运行的脚本,该脚本有机会更改文件.

当您尝试实现这样的方案时,请记住Mercurial是一个分散的版本控制系统(这应该不足为奇......)因此人们在本地提交而不与中央服务器通信.因此,不可能保证其他人不使用版本号.唯一的解决方法是使用变更集哈希作为版本"数字",但是你不会得到很好的增加数字.如果您有一个集中式构建服务器,那么您可以让它增加版本号,然后返回到一个简单的集中式世界视图.

最后,让我提一下Mercurial有一个latesttagdistance模板关键字,它对集中式构建机器非常有用:它计算到最新标签的距离,这个距离通常在构建机器上单调递增.像它一样使用它

hg parents --template "{latesttag}+{latesttagdistance}-{node|short}"
Run Code Online (Sandbox Code Playgroud)

有关更多灵感,请参阅Mercurial setup.py文件.