Должны ли файлы *.xccheckout в Xcode5 игнорироваться в VCS?

Apple представила в Xcode 5 новый тип файла, связанный с проектом: "xccheckout".

Этот файл находится в каталоге ".xcodeproj / project.xcworkspace / xcshareddata /", и, похоже, он связан с системой управления версиями проекта.

Пример файла находится здесь: http://pastebin.com/5EP63iRa

Я предполагаю, что этот тип файла должен игнорироваться в VCS, но я не уверен.

Итак, вот вопросы:

  1. Следует ли игнорировать "xccheckout"?
  2. Какова его цель?

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 стал лучше и разделяет то, что нужно распространять, а что нужно хранить локально. Например; эти строки будут игнорировать схемы сборки по умолчанию, что хорошо, потому что вы можете пометить определенные схемы сборки как общие, и они помещаются в каталог, который не игнорируется.

Точки останова игнорируются, но вы можете пометить определенные точки останова как общие для разных проектов, и они также помещаются в каталог, который не игнорируется.

Другие вопросы по тегам