【问题标题】:How to review a complete feature branch before merging如何在合并之前查看完整的功能分支
【发布时间】:2018-07-25 06:27:15
【问题描述】:

如何查看功能分支/命名分支中的更改,查看此分支中所做的所有更改?

我知道我可以一一审查所有单独的提交,但这会导致在一次提交中审查一些代码,这可能是稍后修改或删除的少数提交。

我还知道比较存储库的任何修订版(TortoiseHg 中的 Visual Diff),并使用它来比较命名分支的上次提交与其起点。但是,如果命名分支在两者之间集成了默认更改,则此操作会失败。

还有其他方法吗?

【问题讨论】:

  • 为什么不将其与您打算合并的分支进行比较?
  • 因为差异将同时具有功能分支更改和目标分支(通常默认)更改。但是,如果目标分支首先集成到功能分支,这可能会起作用。这是你的意思吗?

标签: mercurial tortoisehg


【解决方案1】:

我想你有这样的事情:

             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,您应该将最后一次合并的 P2topictip 进行比较。您应该使用的命令是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 是一些反复无常的功能,但我找不到有关它的详细信息。这是这个分支的父母之一吗?此外,是否有可能在 TortoiseHg 或任何其他 GUI 中进行此操作? Mercurial 解决方案很好,但 GUI 解决方案将是一个很大的好处。
  • 是的,p2() 获得了第二个父母。见mercurial-scm.org/wiki/Merge。另外,请执行hg help revsets 或访问mercurial-scm.org/repo/hg/help/revsets 以获取有关p2() 和其他谓词的更多信息。
  • 您应该启用extdiff 扩展来调用外部程序(例如kdiff3)来比较修订。然后,你运行hg extdiff -p kdiff3 -r 'p2(last(merge())):.'
  • 我无法让它工作。我发现在 TortoiseHg 的查询中搜索修订很容易。但是查询p2(last(merge())) 似乎没有返回一个好的结果。 merge() 给出了在任何分支中完成的所有合并。 last(merge()) 给出了最后一个。就我而言,这是完全不同的分支,因为存储库中还有其他功能分支。
  • 这在 TortoiseHg 中不起作用,因为您选择的不是修订版本而是差异间隔。正如我之前所说,您应该使用extdiff 扩展名并从命令行调用hg extdiff -p kdiff3 -r 'p2(last(merge())):.'
猜你喜欢
  • 2021-07-26
  • 2017-07-13
  • 2021-01-12
  • 2014-08-23
  • 2019-07-31
  • 2017-07-01
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多