Должны ли файлы *.xccheckout в Xcode5 игнорироваться в VCS?
Apple представила в Xcode 5 новый тип файла, связанный с проектом: "xccheckout".
Этот файл находится в каталоге ".xcodeproj / project.xcworkspace / xcshareddata /", и, похоже, он связан с системой управления версиями проекта.
Пример файла находится здесь: http://pastebin.com/5EP63iRa
Я предполагаю, что этот тип файла должен игнорироваться в VCS, но я не уверен.
Итак, вот вопросы:
- Следует ли игнорировать "xccheckout"?
- Какова его цель?
5 ответов
Вы должны проверить в Xcode 5 .xccheckout
файл; в общем, файлы в xcshareddata
должно быть совершено.
.xccheckout
Файл содержит метаданные о том, какие репозитории используются в рабочей области. Для одного проекта в одном репозитории, который не имеет большого значения. Но если вы используете рабочее пространство, в котором есть несколько проектов из разных репозиториев, наличие .xccheckout
Файл в рабочей области позволяет XCode знать, что все компоненты, которые составляют рабочую область, и где их получить.
*.xccheckout
Файл содержит метаданные VCS, и поэтому не должен быть зарегистрирован в VCS.
С другой стороны: проверка в этом файле, вероятно, не создаст трудностей слияния или других проблем.
Если вы хотите игнорировать этот файл (который я рекомендую), вы должны добавить эту строку в ваш проект .gitignore
:
*.xccheckout
Abizern не будет работать для проектов внутри рабочей области. Потому что, когда вы используете рабочее пространство, путь к *.xccheckout
файл будет: <workspace-name>.xcworkspace/xcshareddata/<workspace-name>.xcchekout
, И это на самом деле игнорирует больше, чем вы хотели бы.
Редактировать: Этот файл существует для управления знанием XCode о многих системах VCS в вашем проекте, см. Ответ Криса Хансона. Для> 99% проектов файл.xccheckout является перебором конфигурации.
Это зависит. Файл содержит ссылки на используемый вами удаленный репозиторий. Если вы используете централизованную VCS, такую как Perforce или Subversion, удаленный репозиторий каждого будет одинаковым, и вы можете и должны зарегистрировать этот файл.
Если вы используете распределенную VCS, такую как Mercurial или git, но используете ее, как если бы она была CVCS (иными словами, все клонировались из общего репозитория непосредственно в свое личное рабочее пространство на своем компьютере), вы все равно можете проверить его в.
Однако, если вы используете DVCS с каждым, имеющим собственный удаленный клон, например, используя GitHub в стандартном шаблоне использования, вы НЕ хотите регистрировать этот файл. Если вы это сделали, то ваши Pull Requests будут запрашивать ваши настройки репозитория. скопировать его в файл xccheckout другого пользователя, но ваши настройки хранилища будут отличаться от настроек других, потому что вы все используете разные удаленные хранилища.
Да, Project.xccheckout
файл должен быть зафиксирован в вашем хранилище. Xcode использует этот файл, чтобы сообщить другим, кто открывает рабочую область, полный список репозиториев управления исходным кодом, используемых рабочей областью, и расположение рабочей копии относительно рабочей области, независимо от того, являются ли эти репозитории Git, SVN или и тем, и другим.
Когда вы открываете рабочее пространство, Xcode использует Project.xccheckout
файл, чтобы уведомить пользователя о том, что есть другие репозитории, являющиеся частью рабочей области, и спрашивает, какие из них должны быть извлечены. При проверке дополнительных репозиториев Xcode помещает рабочие копии в ту же структуру папок, относящуюся к рабочему пространству, что и была, когда Project.xccheckout
файл был создан.
Как сказал Chris Hanson, это, вероятно, не имеет значения для рабочего пространства с одним репозиторием, одним проектом, но для более сложных дел это действительно будет очень удобно.
Вы можете узнать больше об этом в видео сеанса WWDC 2013 Понимание управления исходным кодом в Xcode; соответствующая часть начинается примерно через 15 минут.
Это то, что у меня есть в моем.gitignore для Xcode.
#Xcode
*.xcuserstate
project.xcworkspace/
xcuserdata/
Он сохраняет все, что связано с местным состоянием того, как проекты ищут меня из хранилища.
Здесь находится файл xccheckout, поэтому по умолчанию он не отслеживается в моей системе.
Xcode стал лучше и разделяет то, что нужно распространять, а что нужно хранить локально. Например; эти строки будут игнорировать схемы сборки по умолчанию, что хорошо, потому что вы можете пометить определенные схемы сборки как общие, и они помещаются в каталог, который не игнорируется.
Точки останова игнорируются, но вы можете пометить определенные точки останова как общие для разных проектов, и они также помещаются в каталог, который не игнорируется.