Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hash 打印当前Mercurial修订哈希?_Hash_Mercurial_Revision - Fatal编程技术网

Hash 打印当前Mercurial修订哈希?

Hash 打印当前Mercurial修订哈希?,hash,mercurial,revision,Hash,Mercurial,Revision,有没有比在Mercurial中提取当前修订哈希更好的方法 hg log-l1 | grep变更集| cut-d:-f3 ? 我的webapp部署脚本的一部分是用其唯一的修订哈希“标记”上传的应用程序tarball hg log -l 1 --template '{node|short}\n' 请参阅,段落“模板的基础知识”和以下内容。尝试: hg id -i 例如: $ hg id -i adc56745e928 这将输出长散列,如果有未提交的更改,则会加上一个加号。您可以在父命令中使用-

有没有比在Mercurial中提取当前修订哈希更好的方法

hg log-l1 | grep变更集| cut-d:-f3

?

我的webapp部署脚本的一部分是用其唯一的修订哈希“标记”上传的应用程序tarball

hg log -l 1 --template '{node|short}\n'
请参阅,段落“模板的基础知识”和以下内容。

尝试:

hg id -i
例如:

$ hg id -i
adc56745e928
这将输出长散列,如果有未提交的更改,则会加上一个加号。

您可以在父命令中使用--template,我使用它来获得长散列:

hg parent --template '{node}'

总结答案和他们的回答,这似乎是 打印唯一(不是缩写形式)标识符的最佳方法 当前版本的名称:


由于存在
--template
而最具体的未弃用命令,如果需要简洁性(如问题所示),它只能打印修订信息:

hglog-l1-b-T'{rev}:{node | short}\n'

或者对于唯一的长格式散列:

hg log-l1-r-T'{node}\n'

-b.
分支(.)
(点代表分支名称)和
-r.
表示当前工作目录修订版,该修订版位于
hg帮助修订集
和中


注意:如果有,则
(点)仅显示工作组的两个家长的姓名。

正如其他人所指出的,不要使用
日志-l


使用
hg log-r.
获取详细信息,而不是使用输出受限且不支持模板的
hg id
。您还可以创建一个小别名,如
here=log-r.
并在此处使用
hg
。如果您只需要散列,请使用
hglog-r--模板“{node}\n”

如果使用了TortoiseHg,右键单击工作台中的修订行并选择“复制哈希”(根据)


我几乎想要这个,但是有很长的散列。别名
lid
log-l1--模板“{node}\n”
正好实现了这一点-打印完整的修订ID。这将打印最近提取的变更集。我们的工作目录可以更新为旧的变更集。要打印更新到的变更集,请使用“hg id”。唯一的问题是,“hgid”不支持模板,也没有打印长哈希的选项(除非有人知道怎么做)。正如Eiver所说,它不会打印工作副本中的实际版本,只打印存储库中的最新版本。因为使用此解决方案可能会引入跟踪错误,所以我对此解决方案投了反对票。乔的反对票也是如此。还有@Eiver use
hg--debug id-i
,正如其他地方所说的那样。如果您想要完整的散列使用,人们可能会错过下面的解决方案:
hg--debug id-i
如果您想要模板支持,请使用
hg parent--template'{node}'
不要使用
hg log-l 1
,它是最新的存储库变更集,不是当前正在工作的副本更改集。不建议在脚本中使用--debug,因为输出不太受仔细控制,具有向后兼容性。使用模板。如果您想使用日志进行操作,请使用
点作为修订。谢谢Ry4an,我不知道“-r.”引用当前工作副本修订。这似乎比从“日志”切换到“父级”更好。没问题
hg help revisions
hg help Revset
有一些类似的功能强大的快捷方式。但这并不是问题的最具体答案,因为afaik
hg id-i
只打印短字符(12个字符)全局哈希id的形式,并且由于
hg identify
缺少
--template
afaics,因此无法仅提取修订,也无法提取其他内容,因为它会打印摘要。请注意,
hg log-l 1
为您提供最新的更改集,而不一定是您当前更新到的更改集!-f标志将hg日志输出限制为当前工作目录的祖先,因此
hg log-f-l1
更接近您想要的内容。由于Ry4an的原因,这似乎是3.1.2下载投票中的默认设置。hg手册页上说
hg parents
是,尽管您在编写此答案时可能不是这样。如果存在未提交的合并,则存在。有人能告诉我们为什么不推荐使用hg parents,以及我们应该使用什么来替代它吗?注意,如果存在,则
(点)仅显示工作组的两个父级的合并。
hg parent --template '{node}'
hg log -l 1 --template '{node}\n' -r .