Я не разработчик XCode, но занимаюсь администрированием Subversion. Я считаю, что .xcodeproj file на самом деле не файл, а каталог, который содержит как информацию о проекте, так и информацию о пользователе. Subversion сохраняет этот каталог в хранилище как каталог. Это хорошо.
Файл project.pbxproj
внутри этого каталога содержит информацию о проекте, и это тоже должно быть сохранено в Subversion. Так настроен проект.
Отдельные файлы * .pbxuser предназначены для конкретного пользователя и не должны находиться в репозитории SVN. Вот где ваша проблема.
На самом деле, это связано с тем, что Mac OS X делает вид, что некоторые каталоги являются просто папками, которые содержат информацию о ресурсах . Обычно это приводит к путанице разработчика, поскольку их браузер отображает один файл, а не каталог.
XCode, вероятно, поступает правильно, если пользователь выполняет свои операции Subversion внутри XCode. (Я знаю, что Затмение делает). И если бы пользователь использовал командную строку Subversion, он бы сразу увидел, что определенные файлы являются каталогами, и что Subversion работает так, как должен. Командная строка Subversion не будет иметь проблем с этими файлами .pbxuser.
Проблема обычно заключается в том, что пользователи используют графический интерфейс Subversion, который использует Finder в качестве браузера - подобно тому, как TortoiseSVN в Windows использует проводник. В сочетании с XCode это может вызвать проблемы.
Лучший способ справиться с этим - создать ловушку перед фиксацией, которая не выполнит фиксацию, если пользователь попытается добавить пользовательский файл * .pbxuser. (И удалить все файлы * .pbxuser из репозитория). Эти пользователи быстро научатся помещать эти файлы * .pbxuser в настройки игнорирования Subversion.
В Perl и Python достаточно хуков для предварительной фиксации файла, которые могут справиться с этим.