Я пытаюсь выяснить, почему 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, он передает соответствующий файл case в anhksvn и думает, что добавляется новый файл Resource.h. Когда он проверяет фактический файл, он видит resource.h, anhksvn видит, что он уже добавлен, поэтому не может быть добавлен снова. Мне пришлось сделать копию resource.h, переименовать файл в SVN, а затем удалить его. Затем я переименовал копию resource.h и снова добавил ее в проект. В этом случае у проекта был правильный регистр, и проблема была решена.
Задача ещё не решена.
Других решений пока нет …