2011-01-18 4 views
3

При добавлении/удалении файлов/изменении настроек изменится .xcodeproj. И если несколько человек пытаются сделать это в одном проекте, потому что SVN не такой умный, как git, это вызовет проблему каждый раз, есть ли способ обойти эту проблему, кроме разговоров со всеми каждый раз?Как работать с проектом iOS с SVN?

ответ

3

Я не разработчик XCode, но администрирование Subversion. Я считаю, что файл .xcodeproj на самом деле не файл, а каталог, содержащий информацию о проекте и информацию о пользователе. Subversion хранит этот каталог в репозитории как каталог. Это хорошо.

Файл project.pbxproj внутри этого каталога содержит информацию о проекте, и это тоже должно быть сохранено в Subversion. Это настройка проекта.

Отдельные файлы * .pbxuser предназначены для конкретного пользователя и не должны находиться в репозитории SVN. Здесь ваша проблема остается.

Фактически, он находится в том, что Mac OS X притворяется, что некоторые каталоги представляют собой просто папки, содержащие информацию о ресурсе. Обычно это приводит к путанице разработчиков, поскольку их браузер показывает один файл, а не каталог.

XCode, вероятно, делает то же самое, если пользователь выполняет операции Subversion внутри XCode. (Я знаю, что Eclipse делает). И, если пользователь использовал командную строку Subversion, они сразу увидели бы, что некоторые файлы являются каталогами, и что Subversion работает так, как должно. Командная строка Subversion не будет иметь проблем с этими файлами .pbxuser.

Проблема обычно возникает, когда пользователи используют графический интерфейс Subversion, который использует Finder в качестве браузера, - например, способ использования TortoiseSVN в Windows использует Explorer. Это в сочетании с XCode может вызвать проблемы.

Лучший способ справиться с этим - создать крюк предварительной фиксации, который не сможет выполнить фиксацию, если пользователь попытается добавить в пользовательский файл * .pbxuser. (И удалить все файлы * .pbxuser из репозитория). Эти пользователи быстро научатся помещать эти файлы * .pbxuser в параметр игнорирования Subversion.

В Perl и Python есть довольно файлы для фиксации перехвата, которые могут справиться с этим.

+0

В комплекте с проектом есть два файла: _username_.pbxuser и _username_.mode1v3. Ни один из них не нуждается в управлении версиями. – Caleb

+0

@Caleb: Спасибо за дополнительные файлы. Как я уже сказал, я не разработчик, а инженер по строительству. Проблема, с которой я столкнулась с MacOS X, заключается в том, что ей нравится скрывать каталоги в файлах в Finder. Это отлично подходит для пользователя, но разработчики должны знать лучше. Если вы используете XCode для проверки и удаления файлов через SVN, он сделает «правильную вещь». Если вы используете клиент Subversion из командной строки, вы увидите, что определенные файлы на самом деле являются каталогами, и вы сами поправитесь. Если вы используете клиент SVI GUI, который зависит от Finder, вы каждый раз испортите. –

0

Я думаю, что Xcode 4 имеет встроенную поддержку SVN, которая помогает с этими проблемами совсем немного.

+1

К сожалению, многим разработчикам не нравятся встроенные средства управления версиями в среде IDE, и они настаивают на том, чтобы делать этот тип материала самостоятельно. Я не могу винить их. Обычно требуется довольно много настроек, чтобы заставить их работать, а затем выяснять, как делать что-то, кроме того, что проверка и удаление файлов может расстраивать. Если вы знакомы с другим клиентом SVN, почему бы просто не использовать это? Затем вы сталкиваетесь с известной проблемой «Это файл/Нет, это проблема с каталогом», которая не существует на любой другой платформе Unix/Linux. –

Смежные вопросы