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
如何在Mercurial中显示未应用的变更集列表_Mercurial_Push - Fatal编程技术网

如何在Mercurial中显示未应用的变更集列表

如何在Mercurial中显示未应用的变更集列表,mercurial,push,Mercurial,Push,将变更集推送到名为“a”的存储库后,当我在“a”中时,如何查看等待应用的变更集列表 在这个基础上, 在repo B中,我将变更集推送到repo B 我改为回购B 如何列出步骤1中推送的变更集 不确定“未应用”变更集是什么意思,不过这里有一些想法 通过在执行hg push之前执行hg outgoing,您可以很容易地看到哪些变更集将被推送到存储库中。这将列出使用默认选项推送的所有变更集 类似地,您可以在目标存储库中使用hg incoming,以显示将从另一个repo中提取哪些变更集 至于“未应用”

将变更集推送到名为“a”的存储库后,当我在“a”中时,如何查看等待应用的变更集列表

在这个基础上,

  • 在repo B中,我将变更集推送到repo B
  • 我改为回购B
  • 如何列出步骤1中推送的变更集
  • 不确定“未应用”变更集是什么意思,不过这里有一些想法

    通过在执行
    hg push
    之前执行
    hg outgoing
    ,您可以很容易地看到哪些变更集将被推送到存储库中。这将列出使用默认选项推送的所有变更集

    类似地,您可以在目标存储库中使用
    hg incoming
    ,以显示将从另一个repo中提取哪些变更集

    至于“未应用”变更集,如果我假设您指的是比工作目录更新的变更集,您可以使用
    hg log-r.:tip
    ,它应该(我没有机会测试它)显示所有更新的修订,但实际上不是所有最近推送的修订

    编辑:我已将
    -r
    选项中的修订集更新为应该有效的版本。查看上的Revset以了解更多可能性。

    $hg summary
    
    $ hg summary
    parent: 0:9f47fcf4811f 
     .
    branch: default
    commit: (clean)
    update: 2 new changesets (update) <<<<<
    
    父项:0:9f47fcf4811f . 分支:默认 承诺:(清洁)
    更新:2个新的变更集(更新)我写了一个不同的答案,但我最终找到了一个更好的方法来做这里需要做的事情(对我来说,一个更好、更明确的解决方案在这篇文章的结尾,在[编辑]部分)

    使用
    hg日志

    具体来说,首先发出
    hg sum
    命令。这将给我:

    parent: 189:77e9fd7e4554
     <some commit message>
    branch: default
    commit: (clean)
    update: 2 new changesets (update) 
    
    显然,
    2
    将被替换为
    hg sum
    报告的变更集数量

    这是因为
    tip
    将引用最新(或“未应用”)的变更集。通过将输出限制为2个最新的更改(
    -l2
    ),仅显示我感兴趣的更改集的信息。使用
    -v
    ,也会显示受变更集影响的文件列表

    为了简化操作,我在
    .bashrc
    文件中定义了一个用户命令:

    alias hglog="hg log -r tip -l $1"
    
    这允许我键入
    hg sum
    (获取挂起/未应用的变更集数量),然后键入
    hglog x
    ,其中
    x
    hg sum
    显示的变更集数量

    也许有一种更完整的方法可以做到这一点,例如使用自定义模板,但我想它在复杂性方面把事情推得太远了

    [编辑](第三次迭代) 通过扩展别名的概念,我得到了这个问题最令人满意的答案,这样我就不必再键入
    hgsum
    。My.bashrc文件现在包含以下内容:

    show_pending_changesets() {
      nb=$(hg sum | grep "update:" | sed 's/update: \([0-9]*\) .*/\1/');
      if [ `expr $nb + 1 2> /dev/null` ] ; then
        hg log -r tip -v -l $nb
      else 
        echo "Nothing new to report"
      fi ;
    }
    ...
    alias hgwhatsnew=show_pending_changesets
    

    说明:我正在使用
    sed
    hg sum
    输出的最后一行(以
    update:
    开头)提取变更集的数量。然后将该数字输入
    hg log
    。然后我所要做的就是键入
    hgw
    并完成它。HTH

    您正在寻找最近被推到回购中的变更集列表?这将满足我当前的需求。是的。您所说的“等待应用”是什么意思?我所说的“等待应用”是指如果我进行hg更新,将使用的变更集列表。在这种情况下,如果您能够制定出正确的变更集定义(
    -r
    选项)在我的回答中,它应该向您显示比当前工作目录更新的任何更改集。语法错误:hg log-r“parents():“hg:parse error:missing arguments抱歉,我部分是从内存编写的-我当前在一台没有hg的机器上,因此无法提供更正:(我还尝试过其他方法——回家后,我会在一个真实的系统上尝试,而不是使用半受过教育的猜测:)此命令按我希望的方式列出更改集:hg log-r.:tip如果您关注特定的分支,通常可以添加
    -b branchname
    选项。不确定这对
    -r.:tip
    -我又离开了我的hg:)
    show_pending_changesets() {
      nb=$(hg sum | grep "update:" | sed 's/update: \([0-9]*\) .*/\1/');
      if [ `expr $nb + 1 2> /dev/null` ] ; then
        hg log -r tip -v -l $nb
      else 
        echo "Nothing new to report"
      fi ;
    }
    ...
    alias hgwhatsnew=show_pending_changesets