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_Tortoisehg - Fatal编程技术网

Mercurial 合并前如何查看完整的要素分支

Mercurial 合并前如何查看完整的要素分支,mercurial,tortoisehg,Mercurial,Tortoisehg,如何查看要素分支/命名分支中的更改,查看该分支中所做的所有更改 我知道我可以一个接一个地检查所有单个提交,但这会导致在一次提交中检查一些代码,这可能是以后修改或删除的几个提交 我还知道如何比较存储库的任何修订(OrtoiseHG中的VisualDiff),并使用它来比较命名分支的最后一次提交及其起点。但是,如果命名分支在这两者之间集成了来自默认值的更改,则此操作将失败 还有别的办法吗?我想你有这样的办法: x + y x + y + z

如何查看要素分支/命名分支中的更改,查看该分支中所做的所有更改

我知道我可以一个接一个地检查所有单个提交,但这会导致在一次提交中检查一些代码,这可能是以后修改或删除的几个提交

我还知道如何比较存储库的任何修订(OrtoiseHG中的VisualDiff),并使用它来比较命名分支的最后一次提交及其起点。但是,如果命名分支在这两者之间集成了来自默认值的更改,则此操作将失败


还有别的办法吗?

我想你有这样的办法:

             x + y   x + y + z
               |         |
   x       y   |    z    |     t
------|--------|---------|------------> default
       \        \         \
        \        \         \
         +--------+---------+---------> topic
             a    |    b    |    c    |
                  |         |          \
              x + a + y     |           x + a + y + b + z + c
                            |
                    x + a + y + b + z
要仅查看
a+b+c
,您应将上次合并的
P2
主题的
提示进行比较。您应该使用的命令是
hg diff-r'p2(last(merge()):。

下面是一个与前面的图表对应的测试用例:

#!/bin/bash

cd /tmp
hg init view-abc
cd view-abc
echo x > x
hg commit -Am x

hg branch topic
echo a > a
hg commit -Am a

hg up default
echo y > y
hg commit -Am y

hg up topic
hg merge default
hg commit -m merge
echo b > b
hg commit -Am b

hg up default
echo z > z
hg commit -Am z

hg up topic
hg merge default
hg commit -m merge

hg up default
echo t > t
hg commit -Am t

hg up topic
echo c > c
hg commit -Am c

hg diff -r 'p2(last(merge())):.'

为什么不将其与您要合并到的分支进行比较呢?因为差异将同时具有功能分支更改和目标分支(通常默认)更改。但是,如果目标分支首先集成到功能分支,那么这可能会起作用。这就是你的意思吗?听起来p2是一个反复无常的函数,但我找不到它的细节。这是这个分支的父母之一吗?此外,是否有可能在OrtoisehG或任何其他GUI中实现此功能?Mercurial解决方案不错,但GUI解决方案将是一个巨大的奖励。是的,
p2()
获得第二个父级。看见此外,请执行
hg help revsets
或访问以获取有关
p2()
和其他谓词的更多信息。您应该启用
extdiff
扩展来调用外部程序(例如kdiff3)以比较修订。然后,运行
hg extdiff-p kdiff3-r'p2(last(merge()):。
。我无法让它工作。我发现在OttoisehG中的查询中搜索修订很容易。但是,查询
p2(last(merge())
似乎没有返回好结果
merge()
提供任何分支中曾经完成的所有合并
last(merge())
给出它们的最后一个。在我的例子中,这是完全不同的分支,因为存储库中还有其他功能分支。这在OrtoiseHG中不起作用,因为您选择的不是修订,而是差异间隔。如前所述,您应该使用
extdiff
扩展名,并从命令行调用
hg extdiff-p kdiff3-r'p2(last(merge()):。