获取 Mercurial 下一次提交哈希值

il_*_*mix 3 mercurial

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

为什么?

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

pla*_*ker 5

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

~/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
Run Code Online (Sandbox Code Playgroud)

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

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

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

会给你

c7f5ff744e43 from 2017-07-26 14:05 +0200
Run Code Online (Sandbox Code Playgroud)

根据构建链中的信息动态生成版本文件

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