変換されたSVNリポジトリでこれが発生するのを見てきました(hgsubversionhg convert
を使用していますが、同じ問題があるに違いありません)。私が見たケースでは、パスのsvnプロパティが変更され、明らかに「バックスラッシュを含むファイル名」(パスではない)がsvnに保存されました。
最初のケースでは、それがディレクトリ パスであったため、すぐに問題が発生しました。Windows でディレクトリ パスを使用して長さ 0 のファイルが作成され、その後、ディレクトリを作成できなかったため、更新後に Mercurial が中止されました。同名の。
二重エントリを作成したシーケンスは次のようなものだと思います。
バックスラッシュ付きのファイルパスを含むリビジョンへの更新
Mercurial マニフェストには現在バックスラッシュを含むパスが含まれているため、新しいファイルは追跡されていないと表示されますが、作業ディレクトリを見ると、すべてのファイル パスがスラッシュに正規化されるため、マニフェストには表示されません。
ユーザーが「新しい」ファイルを追加します。
以降の更新では、両方のパスが更新されますが、一方が作業ディレクトリで他方を上書きします。運が良ければ、新しいバージョンが作業ディレクトリにあるものです。
おそらくWindowsではこれを修正できませんが、Linux(または大文字と小文字を区別するファイルシステムを備えた他のUNIXライクなOS)では、ファイル名を単一引用符で囲むことにより、バックスラッシュバージョンを削除できるはずですhg rm 'Dir\Project\FileName.ext'
. 'Dir\Project\FileName.ext'
Linux で問題のあるリビジョンに更新すると、作業ディレクトリのルートに実際に名前が付けられたファイルが表示されるはずです。
バックスラッシュのバージョンを削除する必要があることを確認してください。そうでない場合は、必要な結果を得るために手動でマージする必要がある場合があります。