我们似乎搞砸了一些 HG 配置。
合并时,我们会看到其中一些条目:
warning: detected divergent renames of core/src/main/java/x/y/z/MyFile.java to:
core/src/main/java/x/y/z/NewFileA.java
core/src/main/java/x/y/z/NewFileB.java
MyFile 不应链接到“新文件”。你怎么能打破这个链接?
我们似乎搞砸了一些 HG 配置。
合并时,我们会看到其中一些条目:
warning: detected divergent renames of core/src/main/java/x/y/z/MyFile.java to:
core/src/main/java/x/y/z/NewFileA.java
core/src/main/java/x/y/z/NewFileB.java
MyFile 不应链接到“新文件”。你怎么能打破这个链接?
事后您不能断开链接。该链接是在您(很可能)创建时创建的
$ hg rename MyFile.java NewFileA.java
在一个分支中,有人做了
$ hg rename MyFile.java NewFileB.java
在另一个。合并两个分支时,您最终会得到NewFileA.java
和NewFileB.java
。有些人可能认为这是冲突,因此发出警告。
你也有可能做到了
$ hg copy MyFile.java NewFileA.java
$ hg copy MyFile.java NewFileB.java
并且是故意这样做的。在这种情况下,没有冲突,不需要警告。Mercurial 无法在内部区分这两种情况,因为hg rename X Y
与 相同hg copy X Y; hg remove X
。有关真正作用的信息,请参阅我的其他答案。hg copy
所以,别担心,什么都没有。合并后,您将不会再次看到警告 - 仅当您与MyFile.java
仍然存在的分支合并时才会出现警告。
除非有一些我不知道的负面影响,否则您可以通过删除或忘记无意复制目标文件、提交该文件,然后重新添加文件(具有相同内容)来中断链接。对原始副本源的更改不会合并到重新添加的文件中。
在 Mercurial 3.7.2 中,我能够重现后续合并(不仅仅是第一次合并),将更改应用于复制目标,这与文档相反,尽管我没有进一步深入研究。这里我指的是合并到提交副本的分支,而不是另一个方向。