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