Xcode изменяет неизмененную раскадровку и файлы XIB
Раскадровки - это скорее королевская боль с точки зрения рабочего процесса git, когда над ними сотрудничают несколько человек. Например, XML в файле .storyboard имеет начало<document>
тегаtoolsVersion
а такжеsystemVersion
атрибуты, измененные в зависимости от конфигурации, в которой работает последний файловый манипулятор. Синхронизация всех версий XCode точно помогаетtoolsVersion
, ноsystemVersion
меняется независимо от того, что зависит от конкретной версии Mac и / или OS X, на которой работает разработчик.
Это идиотское, но в основном безобидное. Что нас беспокоит, так это то, что иногда другие изменения автоматически вносятся в раскадровку, просто открывая их послеgit pull
, То есть Алиса вносит изменения в раскадровку, фиксирует их и помещает в репозиторий. Затем Боб извлекает изменения Алисы и открывает раскадровку, чтобы внести дальнейшие изменения. В тот момент, когда он открывает раскадровку, значок файла немедленно переходит в измененное, но несохраненное состояние, иgit status
показывает, что любое количество странных изменений произошло. Все это без того, чтобы Боб ничего не изменил и не сохранил файл сам
Наиболее распространенное автоматическое изменение, которое мы наблюдаем, - это исчезновение или повторное появление всего<classes>
отметьте иерархию в конце файла раскадровки. Мы не выяснили, что является причиной этого. У нас может быть несколько локализованных версий раскадровки в различных каталогах .lproj, и при их открытии в Интерфейсном Разработчике иерархия классов может самопроизвольно удаляться из одних и добавляться в другие или оставляться в одних только. Это вызывает много шума вgit diff
, но это на самом деле не нарушает никакой функциональности. Мы часто выборочно добавляем фактические изменения, которые мы внесли в индекс git, фиксируем их, а затем просто отбрасываем спонтанные, бессмысленные<classes>
изменения. Это делает коммиты маленькими и красивыми, какими они и должны быть. В конце концов, однако, это становится слишком много, чтобы беспокоиться, так как XCode продолжает пересматривать изменения, и кто-то просто гневает их и некоторые другие вещи ... что хорошо, пока XCode другого не решит хотеть изменить их обратно без всяких усилий. очевидная причина. (Наша история коммитов много ругается по этому поводу.)
Кто-нибудь еще видит это поведение? Это ошибка XCode или проблема конфигурации на одном или нескольких наших Mac для разработчиков? Мы наблюдали похожее поведение при работе с файлами XIB, но раскадровки кажутся более восприимчивыми к этому.