Как я могу разумно подходить к управлению версиями и моделям Core Data? - PullRequest
8 голосов
/ 30 июня 2010

Когда мы помещаем файлы модели Core Data в систему контроля версий с помощью git, мы всегда испытываем ужасное время, когда объединяем изменения - единственный надежный способ избежать изменений вручную - это общение между командами.заблокировать доступ к модели, пока один человек вносит необходимые изменения и подталкивает, затем к следующему человеку и т. д. Конечно, есть лучший способ справиться с этим, но, как новичок в git, не приходит на ум очевидного решения.Есть предложения?

Ответы [ 3 ]

4 голосов
/ 06 апреля 2013

Хотя нет способа обойти проблему слияния базовых моделей данных, я создал драйвер git diff для файлов базовых моделей данных, который должен немного упростить задачу (см. README для инструкций по настройке)

https://github.com/chaitanyagupta/XCDataModelPrinter

После того, как вы настроили XCDataModelPrinter в качестве драйвера git-diff, вы можете сделать несколько вещей, чтобы упростить объединение:

Просмотрите сделанные измененияк модели в нашей ветке

git diff other-branch...my-branch -- /path/to/model

Просмотр изменений, внесенных в модель в другой ветке

git diff my-branch...other-branch -- /path/to/model

После того, как вы просмотрели изменения, давайте попробуем объединить нашуветвь:

git merge other-branch

Если git не сообщил о конфликте слияния, просмотрите результаты слияния (в этом случае вы увидите комбинированный дифференциал)

git diff --cached /path/to/model

Если слияние произошлов конфликте вы можете выбрать один из двух путей: проверить файл модели в своей собственной ветке и вручную добавить изменения, сделанные в другом, или наоборот.Предполагая, что вы хотите использовать первый путь:

Проверьте изменения модели в нашей собственной ветке:

git checkout --ours -- /path/to/model

Используя команду diff выше, чтобы увидеть изменения, сделанные в другой ветке, вручнуюдобавьте эти изменения и просмотрите:

git diff -- /path/to/model

Как только вы будете удовлетворены, просто добавьте git-файл модели, чтобы он больше не помечался как необработанный, и подтвердите:

git add /path/to/model
git commit
3 голосов
/ 01 июля 2010

Насколько я видел, в настоящее время нет более разумного пути, потому что модель хранится в формате, который не поддается объединению.Обычно я делаю именно то, что вы делаете, чтобы один человек работал над моделью одновременно, чтобы избежать столкновений.

1 голос
/ 01 июля 2010

Как только вы начнете поддерживать модели отображения миграции, по крайней мере, вы сможете сравнить модели данных и взглянуть на изменения.Такая же функциональность сравнения также была бы полезна в SCM-версиях моделей данных и облегчила бы жизнь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...