Mercurial 防止在合并时静默删除文件

Posted

技术标签:

【中文标题】Mercurial 防止在合并时静默删除文件【英文标题】:Mercurial prevent deleting of file silently on merge 【发布时间】:2020-04-11 12:54:46 【问题描述】:

所以我有一个容易重现的问题。我有一个分支(我们称之为 branch1),我在其中添加了一些文件。从这个分支我创建了另外 2 个分支(branch2 和 branch3)。在其中一个中,我删除了我在原始分支中添加的一个/多个文件(假设我删除了分支 3 中的 example.txt)。

现在当我在本地合并分支 2 和分支 3 时,mercurial 会默默地删除 example.txt,但是我不喜欢在我不知情的情况下默默地完成。我希望 mercurial 明确地问我这个问题,而无需我手动检查 branch2 中的所有这些文件并添加无意义的 \n 或其他内容来防止静默删除。

有人知道是否有一个命令行参数可以用来合并以实现这种行为?

【问题讨论】:

如果您知道丢失文件的名称,只需在提交之前将其再次提取到您的工作树中...? 嗯,在这个非常简单的例子中,很容易看出,但是如果你要与另一个提交量很大的分支合并,那么调试哪些文件完全丢失当然要困难得多突然之间,尤其是在合并期间没有通知您时。 是的,这就是我说“如果”的原因。考虑将您的工作树与其主要父级进行比较,以找出在此特定比较中删除了哪些文件。见***.com/q/15051591/1256452 【参考方案1】:

有人知道是否有一个命令行参数可以用来合并以实现这种行为?

是的。编写具有您“预期”(但不寻常)行为的自己的合并工具,并将其与合并命令的-t 命令行选项一起使用

【讨论】:

以上是关于Mercurial 防止在合并时静默删除文件的主要内容,如果未能解决你的问题,请参考以下文章

Mercurial:获得分支的精确副本

如何在 mercurial 中查看已删除文件的内容

在 Mercurial 存储库历史记录中快速查找已删除的文件?

如何从 Mercurial 克隆中删除工作副本?

Mercurial/Meld 中的 3 路合并如何工作?

Mercurial:在一个仓库中的分支之间合并一个文件