【问题标题】:git show equivalent in Mercurialgit 在 Mercurial 中显示等效项
【发布时间】:2020-04-14 14:03:53
【问题描述】:

什么相当于 Mercurial 中的 git show ?我主要关注给定变更集与其父级之间的差异,不一定是变更集元数据。

理想情况下以hgrc 中的别名表示。

【问题讨论】:

    标签: git mercurial


    【解决方案1】:

    要查看提交的差异,只需使用hg diff -c REV。您还可以通过使用 -r 两次来指定第一个和最后一个版本,例如hg diff -r REV^ -r REV.

    作为别名,只需使用:

    [alias]
    show = diff -c
    

    (请注意,show 已经是 Mercurial 命令,因此您可能需要选择其他名称。)

    或者,如果您还需要查看提交元数据,也可以使用hg log -phg export,但hg diff -c 允许您使用常规差异选项,例如忽略空格。

    对于修订范围,您可以使用:: revset 运算符。 hg diff -r 'REV^::REV' 也可以工作(有关如何表达重要修订集的更多信息,请参阅 hg help revsets)。

    【讨论】:

    • hg help show 将其描述为hg config 命令,因此它实际上只是hg config 的内置别名。实际的别名是showconfig,所以即使定义了别名,hg showconfig 仍然运行showconfig 命令。
    • hg show 命令是最近添加的 show 扩展(核心 Mercurial 的一部分,不是您必须安装的实际扩展)的一部分,与 hg showconfig 不同。跨度>
    • 啊哈,我想我需要升级 hg 版本。 (我的是 5.1.2。)
    • 它应该已经存在,但与其他向后兼容的破坏性更改一样,您需要先启用它。
    【解决方案2】:

    编辑:由于hg show 现在是核心提供的扩展,因此选择另一个名称可能是明智的。另请参阅Reimer Behrends' answer 和那里的 cmets。


    我有一个我使用的小脚本。它不是非常聪明,但它可以让您使用git show <rev>git show(查看HEAD / .)作为hg show

    [alias]
    show = !hg-show "$@"
    

    hg-show 在哪里:

    #! /bin/sh
    
    # hg-show - helper script for "hg show"
    
    case $# in
    0) $HG log -pv -r .;;
    1) $HG log -pv -r "$1";;
    *) $HG log -pv "$@";;
    esac
    

    如果您愿意,将整个脚本放入别名中应该很容易。我曾计划有一天让脚本更精彩,但已经好几年没有使用 Mercurial 了。 (我大概在 2013 年左右的某个时候自己编写了上述脚本。)

    【讨论】:

    • 啊,我不知道hg log 有 -p 选项。正在尝试hg diff -r X^1:X 之类的东西,其中X 是修订号。
    • 您可以(如 Reimer Behrends 的回答)将hg diff 与两个-r 选项一起使用,这是我用来(嗯,曾经使用)区分特定转速的方法。不过,对于我的show,我也想查看日志消息,比如git show
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多