anhksvn が Visual C++ でリソースの編集を混乱させている理由を理解しようとしています。ファイル resource.h と project.rc は、簡単にマージできないため、svn:needs-lock としてマークされています。リソースを編集すると、anhksvn は両方のファイルのロックを正しく要求し、編集は問題ありません。ただし、編集を保存すると、resource.h は「変更済み」ではなく「新規」としてマークされます。
もちろん、リポジトリ内のまったく同じ場所に既存の resource.h ファイルが既に存在するため、コミット時にファイルが既に存在すると言って失敗します。作業コピー自体のファイルは完全に有効であり、問題なくコンパイルされます。私が見つけた唯一の解決策は、resource.hのコピーを作成し、ファイルを削除して更新して古いファイルを元に戻し、新しいファイルをコピーしてコミットすることです。これは非常に面倒ですが、正常に動作します。
なぜこれが起こっているのかを理解しようとしています。SVN はファイルが存在することを認識しており、通常は正常に機能します。ただし、何らかの理由で、リソース エディターが resource.h を保存するときに、コミット操作でファイルが存在することを認識していても、ファイルが存在しないため追加する必要があると考えることがあります。
編集:最終的に問題はファイルケースにあることがわかりました。プロジェクトには Resource.h がありましたが、ファイルは実際には resource.h でした。Windows のファイルの大文字と小文字は無視されるため、Visual Studio では問題ありません。ただし、VS2010 が resource.h ファイルを保存すると、適切なファイル ケースが anhksvn に渡され、新しいファイル Resource.h が追加されていると見なされます。実際のファイルを調べると、resource.h が表示され、anhksvn はそれが既に追加されていることを確認するため、再度追加することはできません。resource.h のコピーを作成し、SVN の下にあるファイルの名前を変更してから削除する必要がありました。次に、コピーの名前を resource.h に変更し、プロジェクトに再度追加しました。その後、プロジェクトのファイルの大文字と小文字が正しくなり、問題は解決されました。