Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在与Mercurial执行合并时自动保留删除?_Mercurial_Merge - Fatal编程技术网

如何在与Mercurial执行合并时自动保留删除?

如何在与Mercurial执行合并时自动保留删除?,mercurial,merge,Mercurial,Merge,我有一个我称之为“子集”的存储库,它是从另一个我称之为“完整”的存储库克隆而来的。我使用“hgrm”删除了子集中的许多文件。我现在需要将对子集中剩余文件的更改从“完整”中拉出来,但我不想恢复我删除的任何文件。如果我在合并后执行拉取操作,则如果我想使用更改的文件或将其保留为删除,则合并将以交互方式要求我提供已完全更改的每个已删除文件。有没有办法自动删除所有已删除的文件,让自己避免重复的压力伤害 顺便说一句,一次性修复(比如使用hg convert on full?)不会成功,因为完整存储库和子集存

我有一个我称之为“子集”的存储库,它是从另一个我称之为“完整”的存储库克隆而来的。我使用“hgrm”删除了子集中的许多文件。我现在需要将对子集中剩余文件的更改从“完整”中拉出来,但我不想恢复我删除的任何文件。如果我在合并后执行拉取操作,则如果我想使用更改的文件或将其保留为删除,则合并将以交互方式要求我提供已完全更改的每个已删除文件。有没有办法自动删除所有已删除的文件,让自己避免重复的压力伤害


顺便说一句,一次性修复(比如使用hg convert on full?)不会成功,因为完整存储库和子集存储库都在积极工作,至少目前是这样。

最简单的方法是在修改的文件之上重新设置删除的基础。只要你没有重命名很多文件,这将很好地工作


有关更多详细信息,请参见答案。

实际上,
hg convert
仍然是正确的方法。Convert以迭代的方式工作,因此它只会带来新的更改集。使用带有大量排除行的
--filemap
,只需使用相同的源克隆和目标克隆重新运行convert命令,就可以在需要合并时进行迭代筛选


这是一种非常常见的模式,例如,如果您的整个项目的一小部分发布给了更广泛的受众。

那么,如果我在子集的克隆上执行此操作,然后将其推到其他人也在修改的子集的“已发布”版本,会发生什么?有人担心他们最终将不得不手动重新设置克隆的基础,或者进行我试图避免的合并。转换不是一次性修复。请参阅下面关于其迭代性质的回答。