gpt4 book ai didi

mercurial - Mercurial:如何仅查看 merge 带来的更改?

转载 作者:行者123 更新时间:2023-12-03 11:43:12 27 4
gpt4 key购买 nike

我试图养成进行代码审查的习惯,但是合并使过程变得困难,因为我不知道如何要求Mercurial“仅显示合并引入的更改,而合并中的任何更改均未出现在合并中。”

或者,更正式一点(感谢史蒂夫·洛什):

Show me every hunk in the merge that wasn't present in either of its parents, and show me every hunk present in either of its parents that isn't also present in 3.



例如,假设我有一个包含两个文件a和b的存储库。如果在修订版1中更改了“a”,则在修订版2中(位于单独的分支上)更改了“b”,并且这两个更改在修订版3中进行了合并,那么我将得到如下所示的历史记录:

// @ changeset:3
| \摘要:已合并。
| |
| o变更集:2
| |摘要:更改b
| |
o |变更集:1
| /摘要:更改
|
o变更集:0
摘要:添加a和b

但是,如果我要求查看修订版3 hg di -c 3引入的更改,Mercurial将向我显示与要求查看修订版1 hg di -c 1引入的更改相同的内容:

$ hg di -c 3
-一个
+++ b / a
@@ -1,1 +1,1 @@
-一种
+更改为
$ hg di -c 1
-一个
+++ b / a
@@ -1,1 +1,1 @@
-一种
+更改为

但是,显然,这不是很有帮助-相反,我想告诉大家修订版3没有引入新的更改(或者,如果合并期间发生冲突,我只希望看到解决方案冲突)。就像是:

$ hg di -c 3
$

那么,我该怎么做呢?

ps :我知道我可以使用 rebase减少存储库中的合并数…但这不是我的问题-我的问题是弄清楚合并后的更改。

最佳答案

简短的答案:您无法使用任何Mercurial股票命令执行此操作。

运行hg diff -c 3将显示3及其第一个父级之间的更改-即运行hg merge时的更改集。

当您将分支视为不仅仅是简单的变更集时,这很有意义。当您运行hg up 1 && hg merge 2时,您会告诉Mercurial:“将changeset 2合并到changeset 1中”。

如果您使用命名分支,则更加明显。假设您的示例中的changeset 2在名为rewrite-ui的命名分支上。当您运行hg update 1 && hg merge rewrite-ui时,您实际上是在说:“将rewrite-ui分支中的所有更改合并到当前分支中。”稍后当您在此变更集上运行hg diff -c时,它向您展示了通过合并引入default分支(或巧合了1的任何分支)的所有内容。

但是,从您的问题来看,您似乎正在寻找一种表达方式:

Show me every hunk in this changeset that wasn't present in either of its parents, and show me every hunk present in either of its parents that isn't also present in 3.



这不是一件容易的事情(我什至不确定我现在是否已经得到了描述)。我绝对可以看到它的用处,因此,如果您可以明确定义它,那么您可以说服我们其中一位阅读SO的Mercurial贡献者来实现它。

关于mercurial - Mercurial:如何仅查看 merge 带来的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1919130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com