【问题标题】:Mercurial: diffs in a particular changeset?Mercurial:特定变更集中的差异?
【发布时间】:2011-07-19 14:21:22
【问题描述】:

这几乎完全是 Examining a single changeset in Mercurial 的副本,毫无疑问,我无法通过谷歌在 SO 上找到另一个问题的副本。

我正在回顾 Mercurial 存储库,我想看看两个修订版(比如 2580 和 2581)之间到底发生了什么变化:

hg log -v -r 2581 

给我所有改变的文件

如何查看这些文件的差异

谢谢。

【问题讨论】:

标签: mercurial


【解决方案1】:

修订版 2580 不一定是 2581 的父修订版。当然,很容易检查它是否是,但更容易做到的是:

hg log -p -r 2581

将 2581 与其(第一个)父版本进行比较,无论它是什么,并且最清楚地包含对问题的答案“2581 到底做了什么?”

【讨论】:

  • 你也可以只使用 hg diff -c 2581 。
  • 等一下,-p 选项不是表示“显示补丁”吗?
【解决方案2】:

试试hg diff -r 2580 -r 2581

【讨论】:

    【解决方案3】:
    hg diff -r 2580 -r 2581
    

    这是一个错误的例子。修订版 2580 可以在另一个分支中,并且您会在两个分支之间获得差异。

    使用

    hg log -p -r 2581
    

    hg diff -c 2581

    它们之间的区别在第一行。 Hg 日志还显示有关变更集的信息(父、作者、日期...)

    我更喜欢第二种变体hg diff -c ...,因为它可以存储到补丁文件中。

    hg diff -c 2581 > revision_2581.patch

    【讨论】:

      【解决方案4】:

      另一个解决方案是使用 revset 表示法,IMO 是一个更好的解决方案,因为您可以在更多地方一致地使用它(即您不需要了解 diff -clog -p )。

      hg diff -r 'last(ancestors(2581),2)'
      

      是的,与 -c(用于差异)和 -p(用于日志)相比,这相当冗长。

      然而 mercurial 允许您创建修订集别名

      在你的.hgrc:

      [revsetalias]
      
      next(s) = descendants(s, 1)
      prev(s) = last(ancestors(s),2)
      

      现在你可以做

      hg diff -r 'prev(2581)'
      hg log -r 'prev(2581)'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多