我们在已发布的 mercurial 历史记录中对文件进行了移动和重命名,但未正确记录,因此它们在历史记录中显示为不相关的删除和添加。
有什么方法可以告诉存储库有关连接的信息,以便--follow
命令可以再次工作?
(对于非推送的更改,这里有一个问题,讨论如何在提交之前让 mercurial 正确记录移动/重命名,以及这里的有用提示。)
一种可行但有点残酷的解决方案:您可以在中央 Mercurial 服务器上远程登录,将重命名修复为本地更改,然后要求所有人再次克隆存储库。
这是有效的,因为所有 Mercurial 回购都是平等的。您只是将其中一个视为“中心”,但实际上它与其他任何一个 repo 一样。因此,如果您可以访问它,您可以在那里重写历史记录。缺点当然是每个开发人员都会注意到,因此他们必须导出他们所做的任何非推送更改,再次克隆存储库,然后导入补丁。
[编辑]一种可能的解决方法是在您进行错误重命名之前创建一个新分支,正确重命名文件,然后将之后的所有更改挑选到新分支中。
我不确定将此分支合并到您的原始分支是否是个好主意。如果你这样做了,那么 Mercurial 过去会看到两种文件重命名,我不确定它会遵循哪一种。
因此,在合并之前,我建议您创建一个小型测试/演示存储库,在其中重现情况,然后尝试一下。
您可以从重命名之前开始一个新的头部,正确地进行重命名,然后将其合并到上游服务器的头部中。它会给你一个冲突。发生这种情况时,将有问题的文件从新的头恢复到修订版(使用好的重命名;hg revert -r <rev> <files...>
)。