Mercurial: tortoishg配置,在合并时总是提示手动解析所有文件



我们通过TortoiseHg与'workbench'使用Mercurial。

当合并分支时,我们经常发现默认的(自动的?)更新选择不是我们想要的。我们想把这个工具配置为总是提示任何合并操作。

每个分支都有一些核心文件,我们需要在两者之间保持最新,但也有一些分支特定的文件需要保留。

如果我们在一个分支中更新核心文件,我们希望在另一个分支中进行合并以获得最新的核心文件。但是默认的TortoiseHg会自动更新,这是我们不想要的。

例子:

1)分支'1'包含一个文件'1.xls',分支'2'有一个等效的'2.xls',它们以二进制形式存储。将'1'合并到基于'2'的工作目录中会导致'2.xls'的删除和'1.xls'的添加。

2)分支'1'包含一个更新的文件'not_core.c',它在分支'2'中有一个等效的'not_core.c'。将'1'合并到基于'2'的工作目录中会导致'2'中的'not-core.c'不必要的自动更新。

3)分支'1'包含更新的文件'core1.c' &"core2.c"。将'1'合并到基于'2'的工作目录中会导致两个文件自动更新,当我们希望提示允许我们选择是否更新这些核心文件时。也许我们现在只需要'core1.c'。

我已经看到了设置"合并工具"的参考。在mercurial.ini中Premerge = false',并且尝试了一些变体,但没有成功。

理想的设置是为每个不同的文件触发图形手动解析。

有谁可以帮助配置支持所描述的功能吗?

谢谢,伊恩。

三种描述的情况有不同的性质在你的情况下,你必须使用不同的技巧针对不同的情况

情况2和3(牧场文件的非冲突更改)可以通过禁用TortoseHG的自动合并来覆盖 (TBT!)(主菜单- File - Settings - Global setting - TortoiseHG -"自动解决合并":False/default - True/)

对于情况1(以及其他非内容更改-重命名,更改属性)情况更糟,自动合并不起作用:合并从一个分支到另一个分支的更改镜像历史,即如果在共同父级中只有2.xls,在源分支中被删除/重命名为1.xls,此更改将反映在目标中。

你可以尝试在这样的合并中使用不同的"内部"合并工具(当你喜欢只从一个分支进行更改时-"虚拟合并")- internal:local和internal:other。但是-它们只适用于更改的内容(再次!)

也许保留"我的"或"他们的"文件在做合并时从TipsandTricks部分会有所帮助(你可以加入提到的merge-revert-resolve到[aliases]中的新命令,并使用它代替普通合并,当需要时)

您可以使用hgrcmerge-patternsmerge-tools部分进行配置。这个设置允许我在测试中强制使用kdiff3:

[merge-patterns]
** = noautomerge
[merge-tools]
noautomerge.executable = kdiff3
noautomerge.args = $base $local $other -o $output --qall
noautomerge.priority = 1
noautomerge.premerge = False

这将关闭Mercurial所做的自动预合并,并启动kdiff3。

它将对所有文件执行此操作,但如果可能的话,最好修改merge-patterns部分使其更具体一些。

另外,要注意您的合并工具可能会自动解决合并本身,如果发生这种情况,请查找命令行选项来关闭该功能。

最新更新