我试图弄清楚为什么 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 并将其再次添加到项目中。然后该项目的文件大小写正确,问题得到解决。