2

实际上,我想做与“与本地合并”相反的事情

澄清一下:我们有一个发布分支和一个默认分支。在发布分支上进行错误修复时,这是例程:

  1. 更新到发布分支
  2. 实施错误修复并提交
  3. 更新到默认分支
  4. 右键单击发布分支中的错误修复提交,然后选择“与本地合并...”

由于在发布分支上做了很多工作,因此一直在分支之间进行更新变得很乏味。在以前版本的 TortoiseHg 中,我可以在合并之前选择分支,实际上是在执行“合并本地与选定”。这将消除上面的步骤 1 和 3。

这在 TortoiseHg 中是否可行?

4

2 回答 2

2

三向合并基本上是对称的:您将代码的两个不同版本(两个分支)合并为一个版本(合并提交)。default更新到和与 合并release,或者以相反的方式进行,在技术上没有区别。特别是,合并冲突完全相同。

在 Mercurial 中,由于命名的分支名称有一个额外的变化:默认情况下,合并提交将继承其第一个父分支的名称。如果您在合并之前不更新到default,那么第一个父级将是release. 但是您可以在提交之前更改分支名称。

在命令行上它只是:

$ hg update release
$ hg merge default
$ hg branch default
$ hg commit -m 'Merged release into default'

在 TortoiseHg 的 2.0 之前的版本中,您会看到这个对话框来提交合并:

hgtk 提交对话框

提交消息上方的“分支:发布”按钮可用于更改下一个提交的分支 - 合并提交。在 TortoiseHg 2.x 中,对话框如下所示:

thg 提交对话框

并且不再有更改分支的按钮。

也许您可以要求 TortoiseHg 开发人员再次添加该按钮,或者您可以使用Henrik Stuart 的 TortoiseHg,如果您想要一个与现代版本的 Mercurial 兼容的 pre-2.0 TortoiseHg。

于 2012-04-13T15:03:03.600 回答
1

我还没有找到办法,即使命令行合并总是与本地。我只是为每个分支保留一个克隆并在克隆之间切换而不是更新单个克隆。对于大型项目,这可以防止在更改分支时通常耗时的“全部重建”。添加额外的拉动步骤,但总体上节省时间:

  1. 发布克隆中,实现错误修复和提交。
  2. 默认克隆中,从发布中拉取并与本地合并。
于 2012-04-12T14:21:35.857 回答