【问题标题】:How can I get the current mercurial changeset revision not the hash如何获得当前的变化集修订而不是哈希
【发布时间】:2012-06-13 09:30:03
【问题描述】:

我需要在一个非常简单的 web 服务中返回当前的 mercurial 变更集,只有递增的修订号而不是哈希。 我知道我可以使用

 hg --cwd C:\repos\MyRepo parent

我会回来的

changeset:   730:9d347e4a8d47
tag:         tip
user:        Simon Martin <simon.martin@mydomain.com>
date:        Tue Jun 12 15:39:45 2012 +0100
summary:     Fixed defect #244...

我需要的只是变更集的 730 部分。目标是能够编写一个非常简单的 Web 服务来返回该值 - 然后它将被另一个应用程序拾取并显示在页脚中,以便快速参考哪个 local 修订是当前的。然后测试过程可以参考那个“构建”,然后可以用来识别它。

【问题讨论】:

  • 请确保您了解那些 本地 修订号非常本地化。当有人克隆存储库时,他们完全有可能以不同的顺序获得相同的变更集,因此这些数字无法唯一地标识除该特定克隆之外的任何地方的构建。
  • 当然,我承认这是一个边缘案例,但我明确需要一个可读的修订版(因此是标题)。将使用的 repo 是一个已部署的站点,什么都不会从中克隆,并且只有 1 条路径 - 从主 repo 通过构建服务器。

标签: mercurial


【解决方案1】:

您可以使用以下方式显示工作副本当前父级的本地修订号:

hg identify --num

请注意,当有本地更改时,这会输出+ 后缀。添加一个-r . 选项来避免这种情况。

您也可以使用-r 选项来获取其他版本的本地版本号。例如,要检索最后标记的祖先的 ID:

hg id -n -r "ancestors(.) and tag()"

【讨论】:

  • 感谢您的信息。我喜欢:“hg id -i”来获取提示变更集 id。
【解决方案2】:

您可以为hg parent 命令使用自定义模板。

这应该得到你想要的:

hg parent --template "{rev}"

【讨论】:

  • 如何以及在哪里设置自定义模板?
  • 在命令行中指定,无需设置。另一个模板示例:--template "Local revision number: {rev}\n".
  • 一些描述此功能的文档可在此处获得:hgbook.red-bean.com/read/…
猜你喜欢
  • 2018-07-04
  • 1970-01-01
  • 2012-02-11
  • 2015-02-12
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 1970-01-01
相关资源
最近更新 更多