Git, как установить.gitattributes для раскадровки И.xib файлы
фон: git -- или любой другой SCM -- может "успешно" объединить раскадровки, xib и файлы pbxproj, поскольку по своей сути они являются просто xml. Иногда возникают конфликты, которые могут быть решены с помощью обычных стратегий разрешения конфликтов. Но xib и раскадровки-это сериализованные форматы некоторых довольно сложных структур данных, поэтому начинается самое интересное.
как и в случае с другим исходным кодом, успешное слияние не гарантирует корректной работы всех объединенных изменений вместе. С файлами, о которых идет речь, git может успешно объединить, но Xcode иногда отображает ошибку "не удалось прочитать архив" при попытке открыть его - т. е. слияние повредило xib.
Я видел предложения о том, чтобы git игнорировал .xibs (не практично), или в .gitattributes отключить diff, установив
*.xib -crlf -diff
технически, это исправляет конфликт слияния / поврежденную проблему xib - но теперь чьи-то изменения потеряны?
точно, лучше рекомендация, которую я видел для файла проекта, - merge=union in .gitattributes по:
*.pbxproj merge=union
вопрос: Я искал совсем немного, и, похоже, нет хорошего решения. Могут ли люди с опытом, скажите мне, что происходит в нескольких случаях использовать?
-
в проекте я переименовываю файл из x в y и удаляю fileA. Тем временем другой программист внес изменения, чтобы добавить файл и удалить файл. Каков результат слияния? Я уверен фактические изменения файловой системы будут правильными, но в панели навигатора Xcode:
- увижу ли я и x, и Y?
- будет fileaбыл снова, потому что это все-таки в другом программиста .pbxproj по?
- будет подан все еще там, потому что он все еще в моем .pbxproj по?
Если git игнорирует .xib files-получу ли я хотя бы предупреждение о том, что файл был изменен и не обрабатывается?
1 ответов
Я бы не устанавливал никаких конкретных .gitattributes
для файлов проекта или nibs в эти дни.
ваши проблемы слияния параллельных изменений в проекты Xcode и xibs/раскадровки существуют в каждой команде с более чем одним разработчиком.
проекты Xcode
несколько трюков для борьбы с конфликтами проекта Xcode:
- Возьмите одну сторону слияния и вручную примените другие изменения после слияния. Если вы удалили файлы, они будут красными, если вы нужно добавить их, они будут доступны для добавления.
- при добавлении файлов к вашим целям они будут идти в нижней части фазы сборки "компиляция источников". Избегайте конфликтов с другими людьми, перетаскивая их вверх по этому списку в случайную позицию.
- использовать
.xcconfig
файлы настроить ваши проекты вместо раздела настроек сборки. Файлы конфигурации тривиальны для слияния.
мой лучший совет, если вы сомневаетесь, чтобы принять одну сторону слияния, расслабьтесь и повторите свои дополнения.
XIBs и раскадровки
формат XIBs (и, следовательно, раскадровки) значительно изменился в последние месяцы. Я обнаружил, что дополнительные объекты добавляются во внутренние коллекции файла и слияния могут быть легко выполнены. Если вы вносите изменения в один и тот же объект, вы можете получить там вручную.
этот пост из Itty Bitty Apps выделяет основные изменения:
преимущества этого нового формата XIB XML во много раз:
- XIBs намного меньше (меньше строк кода).
- разработчик может легко прочитать XML и понять, что он указывает в пользовательском интерфейсе.
- слияние XIBs теперь гораздо менее вероятно приведет к сломанным XIBs. Раньше мы редко даже пытались объединить XIB или раскадровку.