Значение фрейма раскадровки Xcode автоматически все время вызывает конфликт слияния. Как это решить?

Каждый раз, когда я объединяю проект objc iOS другого члена команды, у меня возникал какой-то странный конфликт, подобный этому:

<<<<<<< HEAD
    <rect key="frame" x="254.00000003476939" y="0.0" width="63" height="21"/>
=======
    <rect key="frame" x="254.00000010362709" y="0.0" width="63" height="21"/>
>>>>>>> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Мы никогда не меняем значение x и всегда даем целочисленное значение. Очевидно, Xcode автоматически изменил значение. Как предотвратить такие добрые вещи?

1 ответ

Решение

Вы можете избежать проверки в таком измененном значении, убедив Git, что содержимое файла не изменилось.

Это возможно с clean скрипт, который будет отвечать за сохранение только целочисленного значения для х.
Этот скрипт будет применяться только к .storyboard файлы (как описано здесь), и должны будут заменить "254.xxx" на "254".

 sed -i 's/x=\"([^0-9]+).*\"/x=\"\1\"/g'

Восстановление файла с помощью этого сценария автоматизировано с помощью драйвера фильтра содержимого, используя .gitattributes декларация

https://stackru.com/images/b54b2e2a20f7b8e2c05e08343ceed4f124f54a00.png
(изображение из "Настройка Git - атрибутов Git" из " Книги Pro Git "))

Как только вы объявите драйвер файла контент-файла в вашей локальной конфигурации git, он автоматически включит git commit, восстановить файл.
Или он будет считать файл без изменений на git diff / git status даже когда XCode изменил это значение.

Полный пример приведен в разделе " Лучшая практика - автоматизация Git + Build - разделение конфигов ".

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