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