Чи слід ігнорувати * .xccheckout файли в Xcode5 під VCS?


157

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

Цей файл знаходиться в каталозі ".xcodeproj / project.xcworkspace / xcshareddata /", і, здається, він пов'язаний із системою управління версіями проекту.

Приклад файлу тут: http://pastebin.com/5EP63iRa

Я припускаю, що цей тип файлів слід ігнорувати під VCS, але я не впевнений.

Ось ось питання:

  1. Чи слід ігнорувати "xccheckout"?
  2. Яке його призначення?

Це питання, як правило, є досить актуальним; таким чином, я хотів би, щоб це було більш граматично та синтаксично правильним. Якщо ви є носієм англійської мови або ви дуже добре володієте англійською мовою, я хотів би попросити допомоги у перевірці моєї мови. Дякую!
Артем Абрамов

1
Незначні запропоновані зміни: "Apple представила нову", "Приклад файлу тут:". У питанні 1. невідповідна цитата
Sofi Software LLC

3
Я завжди посилаюся на репортаж github / gitignore, щоб знати, які файли слід ігнорувати -> github.com/github/gitignore/blob/master/Objective-C.gitignore
eliocs

Відповіді:


109

Ви повинні перевірити .xccheckoutфайл Xcode 5 ; загалом, файли в xcshareddataповинні бути скоєні.

.xccheckoutФайл містить метадані про те, що сховища використовуються в робочій області. Для одного проекту в одному сховищі це не має великої різниці. Але якщо ви використовуєте робочу область, в якій є кілька проектів з різних сховищ, наявність .xccheckoutфайлу в робочій області дозволяє Xcode знати, що всі компоненти, що складають робочу область, і де їх отримати.


8
Якщо це не було призначено для спільного використання, Apple збереже його, .xcuserdataщоб воно було включене.
Joshcodes

4
Як я вже говорив у своїй відповіді, файл xccheckout містить інформацію про всі сховища, що використовуються в робочій області. Так відбувається незалежно від того, якою системою SCM вони користуються - така робоча область може бути у svn чи git, а її проекти можуть знаходитись у поєднанні сховищ svn та git.
Кріс Хансон

72
Схоже, xccheckout містить ключі та імена, які є специфічними для машини кожного розробника ... Щойно я запускаю xcode, він змінює деякі ключі у файлі, і він змінює щось з назвою IDESourceControlWCCName з <string> OurCompanyAPI </string> на <string > our_company_api / string> - останнє є ім'ям, яке я використав під час клонування репо. Якщо цей файл повинен бути загальним, то Apple зробила досить погану роботу.
Herr Grumps

7
Коли ми перевіряємо цей файл, усі мої співробітники отримують інший IDESourceControlProjectIdentifier ... тож наш .xccheckout змінюється з кожним комітом. -_-
Cœur

9
Незалежно від того, для чого Apple спочатку призначався, .xccheckoutфайли викликають деякі божевільні проблеми на Xcode 6 beta, і я вирішив видалити їх з VCS. Здається, що це пов’язано з помилкою кешування, і я вважаю, що Xcode може відновити їх з VCS автоматично, кожен раз.
eonil

63

*.xccheckoutФайл містить метадані VCS, і тому не повинні бути перевірені в VCS.

З іншого боку: перевірка цього файлу, ймовірно, не створить труднощів з об'єднанням чи інших проблем.

Якщо ви хочете ігнорувати цей файл (що я рекомендую), слід додати цей рядок до проекту .gitignore:

*.xccheckout

Abizern «s рішення не працюватиме для проектів всередині робочої області. Тому що, коли ви використовуєте робочий простір, шлях до *.xccheckoutфайлу буде: <workspace-name>.xcworkspace/xcshareddata/<workspace-name>.xcchekout. І це насправді ігнорує більше, ніж ви хотіли б.

Редагувати: Цей файл існує для управління знаннями Xcode про можливо багато систем VCS у вашому проекті, див. Відповідь Кріса Хансона . Для> 99% проектів файл .xccheckout є надмірним налаштуванням.


1
Було б приголомшливо, якби ви могли розширити цю заяву, "вона насправді ігнорує більше, ніж ви хочете". Зокрема, кілька прикладів інших файлів, які потрапляють у цю папку, в яку слід перевірити.
Марк Едінгтон

Спостереження: з цього питання я використовую .gitignore від Адама . Він доступний як суть і містить деякий опис вмісту папки xcshareddata.
Марк Едінгтон

@ Позначити : воно ігнорує project.xcworkspace/. Наразі це може бути добре, але я б не розраховував на це для нових версій Xcode.
Берік

6
Ця відповідь невірна, і стандарт GitHub, .gitignoreякий він надає розробникам, не повинен вказувати*.xccheckout
Chris Hanson

2
Після включення цього файлу до мого репортажу з моменту його введення, я нещодавно почав видаляти його з усіх своїх репост. Ця річ створює конфлікти злиття весь час, переважно в проектах, які включають мої власні рамки як підмодулі. І тоді я нічого не отримую з цього файлу, оскільки використовую git для управління підмодулями. Приємна спроба, Apple, дякую, але не дякую.
Паскаль

38

Це залежить. Файл містить посилання на віддалений сховище, яке ви використовуєте. Якщо ви використовуєте централізований VCS, такий як Perforce або Subversion, віддалене сховище всіх буде однаковим, і ви можете і повинні перевірити файл.

Якщо ви використовуєте розподілений VCS, такий як Mercurial або git, але використовуєте його як би CVCS (іншими словами, всі клонувались із спільного сховища безпосередньо в особисту робочу область на своїй машині), то ви все одно можете перевірити це в.

Однак якщо ви використовуєте DVCS з усіма, хто має власний віддалений клон, наприклад, використовуючи GitHub у його стандартному шаблоні використання, ви НЕ хочете перевіряти цей файл. Якщо ви це зробили, ваші запити на виклик запитають ваші налаштування сховища. щоб скопіювати у файл xccheckout усіх інших, але налаштування вашого сховища будуть відрізнятися від усіх інших, оскільки ви використовуєте різні віддалені сховища.


1
Ця відповідь здається мені найкращою. Перевірка їх викликала непотрібні балаканини на відмінності для нашої команди. Я додаю до .gitignore наступне, щоб їх не було: * / .xcworkspace / xcshareddata / *. Xccheckout Я досі не розумію, чому Apple вирішила надмірно зберігати цю інформацію, яка все-таки є у папці .git (я єдиний здогад - змушуйте роботу послідовно працювати в VCS)
Хуан Карлос Мендес

20

Так, Project.xccheckoutфайл повинен бути переданий у ваше сховище. Xcode використовує цей файл, щоб повідомити іншим, хто відкриває робочу область, весь список сховищ керування джерелами, використовуваний робочою областю, та місце розташування робочої копії відносно робочої області, чи є ці сховища Git, SVN чи обом.

Під час відкриття робочої області Xcode використовує Project.xccheckoutфайл, щоб повідомити користувача про наявність інших сховищ, що входять до складу робочої області, і запитує, які слід перевірити. Під час перевірки додаткових сховищ Xcode розміщує робочі копії в тій же структурі папок, що стосується робочої області, як і коли Project.xccheckoutбув створений файл.

Як сказав Кріс Гансон , це, мабуть, не має значення для робочого простору з одним сховищем, одного проекту, але для складніших справ це буде дуже зручно.

Ви можете дізнатися більше про це у відео сесії WWDC 2013 Розуміння контролю над джерелами в Xcode ; відповідна порція починається приблизно через 15 хвилин.


Цей файл корисний лише якщо ви використовуєте Xcode для SCM, інакше цей файл вам взагалі не потрібен. А ще менше, якщо ви працюєте з git forks, у такому випадку шлях репо буде унікальним для розробника
Карлос Рікардо

3

Це те, що у мене є .gitignore для Xcode.

#Xcode
*.xcuserstate
project.xcworkspace/
xcuserdata/

Він зберігає все схоже на місцевий стан те, як проекти шукають мене із сховища.

Файл xccheckout знаходиться тут, тому він не відстежується у моїй системі за замовчуванням.

Xcode покращився і розділяє те, що потрібно ділитися, а що потрібно зберігати на місцевому рівні. Наприклад; ці рядки будуть ігнорувати схеми збірки за замовчуванням, що добре, оскільки ви можете позначити конкретні схеми збірки як спільні, і вони будуть поміщені в каталог, який не ігнорується.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.