1

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 を「新しいファイル」にリンクしないでください。どうすればこのリンクを解除できますか?

4

2 に答える 2

3

事後にリンクを解除することはできません。リンクは、(おそらく) あなたが作成したときに作成されました

$ hg rename MyFile.java NewFileA.java

あるブランチで誰かがやった

$ hg rename MyFile.java NewFileB.java

別の。2 つのブランチをマージすると、 と の両方NewFileA.javaになりNewFileB.javaます。それを競合と見なす人もいるかもしれません。したがって、警告です。

あなたがした可能性もあります

$ hg copy MyFile.java NewFileA.java
$ hg copy MyFile.java NewFileB.java

そしてわざとそうしました。その場合、競合はなく、警告は不要です。hg rename X Yは と同じであるため、Mercurial は内部で 2 つのケースを区別できませんhg copy X Y; hg remove X。実際に何をするかについては、他の回答を参照してくださいhg copy

だから、心配しないで、何も台無しにされていません。MyFile.javaマージ後、再度警告が表示されることはありません — 警告は、まだ存在するブランチとマージする場合にのみ表示されます。

于 2012-08-29T15:45:02.130 に答える
2

私が認識していない悪影響がない限り、誤ってコピー ターゲット ファイルを削除または忘れて、それをコミットし、ファイルを (同じ内容で) 再度追加することで、リンクを解除できます。元のコピー ソースへの変更は、再追加されたファイルにマージされません。

Mercurial 3.7.2 では、コピー ターゲットに変更を適用して (最初のマージだけでなく)以降のマージを再現できました。ここでは、他の方向ではなく、コピーがコミットされたブランチのマージについて言及しています。

于 2016-06-02T22:19:12.347 に答える