hg命令在hg fetch之前查看变更集

时间:2011-02-02 22:35:38

标签: mercurial

您可以使用什么mercurial命令在changeset xyz之前查看变更集?

如果您执行hg log -r :xyz,则会看到xyz之前(包括)xyz之前的所有变更集 - 按升序排列。但是我想很容易地看到之前的变更集。


更新:我真正想要的是:如果我执行hg fetch,我可以使用什么命令来查看fetch中引入的更改集之前的变更集?

hg log -r :xyz其中xyz是fetch工作中引入的第一个变更集,但它返回了我最想要的最新变更集的完整列表。

4 个答案:

答案 0 :(得分:7)

你不能这样做。一旦你拉动(并且提取只是拉动+更新或合并),就没有记录你在拉动之前所拥有的东西以及你从拉动中得到的东西。

在你开始看看会得到什么之前,你应该hg incoming

此外,请停止使用fetch。拉动和更新以及合并的行为是完全独立的,并且在单个命令中执行这些操作会提供不充分的错误报告并且只是混淆了事情。默认情况下禁用该命令,并且有关于完全删除它的说法。合并编码,不应隐藏它。

展开以显示无法涵盖的案例

如果在获取历史记录之前是这样的:

[A]-[B]-[C]

和你(反对所有建议)fetch并获得[D]你现在拥有:

[A]-[B]-[C]-[D]

你可以确切地看到新的东西:

hg diff -r tip-1

或与:

hg diff -r "parent(tip)"

但如果再次使用A,B,C再次开始,你会获取并得到D,E产生这个:

[A]-[B]-[C]-[D]-[E]

没有命令可以运行以查看“更改内容”,而不会先将[C]写在便条上。

另一方面,如果您的回购开始时看起来像这样:

[A]-[B]
  \
   -[C]

并且在获取之后你有这个:

[A]-[B]-[D]
  \
   -[C]-[E]

没有一个命令会告诉你“改变了什么”。同样,如果在拉回你的回购之前看起来像这样:

[A]-[B]-[C]

获取后你得到了这个:

[A]-[B]-[C]-[E]-[F]
  \            /
   -[D]-------/

其中[F]是创建的新的不明智的自动合并变更集提取,然后是命令:

hg diff -r C

会告诉你什么是新的,但没有办法在没有事先写下来的情况下查找'C'。

答案 1 :(得分:0)

我假设xyz是散列形式的变更集。尝试:

hg log -r:xyz-1

这应该只能列出1

之前的变更集

答案 2 :(得分:0)

安装了parentrevspec [1]扩展程序后,您可以使用下面的类似git的语法。根据您的shell,可能不需要引号。

hg log -r 'xyz^'
  1. https://www.mercurial-scm.org/wiki/ParentrevspecExtension

答案 3 :(得分:0)

我不确定之前是什么意思。您的问题可能意味着您可能只想要变更集的父母。

可以轻松搞定
hg parent -r xyz

这不需要花哨的新版本的mercurial。

  

hg parent [-r REV] [FILE]

     

显示工作目录或修订版的父母

     

打印工作目录的父修订版。如果修改是通过       -r / - rev,将打印该修订版的父级。如果是文件参数       给出了文件最后一次更改的修订版(在...之前)       

。打印工作目录修订版或参数--rev(如果给定)。

     

选项:

-r --rev       show parents of the specified revision
--style     display using template map file
--template  display with template
--mq        operate on patch repository