3

当我使用 Subversion 作为构建过程的一部分时,我会运行一个“svn info”并捕获唯一的 ID 号并将其回显到头文件以供其他程序包含。这让用户很容易说,例如,“我正在运行 build 456”,并且给定数字 456,我总是可以准确地交叉引用他们正在运行的内容。

我试图弄清楚如何使用 Mercurial 实现相同的目标。'hg summary' 显示整数 id 以及十六进制哈希码。从我正在阅读的内容来看,对于不同的人来说,整数 id 可能会有所不同。我假设哈希码是唯一的,但它对用户不是很友好。

hg 哈希码是在 Mercurial 中识别特定文件版本的唯一唯一方法吗?

谢谢你,弗雷德

4

2 回答 2

3

是的,这是唯一标识变更集的唯一方法。

文档中的更多详细信息:ChangeSetChangeSetID

如果您想使用整数,我会根据您的构建过程看到两种可能的解决方案。

  1. 如果构建总是发生在同一台机器上(即:相同的存储库),您可以使用整数 id,因为它永远不会在特定的 repo 上更改(除非您进行历史重写)
  2. 如果特定版本的构建只发生一次,您可以在构建脚本中使用每次递增的变量。
于 2011-12-16T18:11:04.753 回答
1

hg id命令将为您提供所需的变更集。您也可以向命令添加一些选项,但最有用和永久的部分是变更集 ID

对于同一个回购

>hg id -nibt
6c4d15d8cfbd 841 default tip

>hg id
6c4d15d8cfbd tip

您还可以考虑一些支持输出模板的命令,并结合模板关键字组合的漂亮输出:hg help templating

已经提到的回购示例

>hg log --template "{rev}:{node|short}-{latesttag}+{latesttagdistance}" -r tip
841:6c4d15d8cfbd-1.3+3
于 2011-12-16T23:50:21.687 回答