获取Mercurial下一个提交哈希

时间:2017-07-26 09:52:43

标签: mercurial

我在修订版56,哈希6af16aa3edf8。下一个版本将是57,带有哈希???。有没有办法知道修订版57的哈希值?我需要在预提交钩子中使用它。

为什么?

我开发了一个脚本,通过预提交钩子调用,更新了一些版本文件。这样,编译的可执行文件可以提供有关它们构建的修订的所有信息。我在我的版本文件中添加了当前提交的修订号,只需使用"父版本号+ 1"进行检索。由于在与同一存储库中的其他人协作时修订版号不可靠,我更喜欢添加哈希值。不知道如何检索它......

1 个答案:

答案 0 :(得分:3)

不,即使您完全了解其变更集,也无法预测下一个散列。提交时间也在那里发挥作用:

~/hg-test $ hg ci -m "b in foo"
~/hg-test $ hg id
d65d61e6898a tip
~/hg-test $ hg rollback
~/hg-test $ hg ci -m "b in foo"
~/hg-test $ hg id
c7f5ff744e43 tip

https://www.mercurial-scm.org/wiki/Nodeid

我建议你解决这个问题: 在构建工具中,查询项目是否是从存储库构建的。如果是这样:检索存储库信息。 E.g。

ver = $(hg log -r. -T"{node|short} from {date|isodate}")

会给你

c7f5ff744e43 from 2017-07-26 14:05 +0200

即时生成构建链中该信息的版本文件

出于分发目的,生成并修改此文件到包,以便构建过程在发现它不是从存储库检出时,仍然有一个可以使用的版本文件。