当我们使用git将Core Data模型文件置于版本控制之下时,我们总是有一个可怕的时间合并更改 - 我们发现的唯一确定的消防方式是避免必须手动合并更改是团队之间的沟通当一个人进行必要的更改并推动,然后是下一个人等时,阻止访问模型 当然有一种更好的方法可以解决这个问题,但作为一个git新手,没有明显的解决方案。 有什么建议吗?
答案 0 :(得分:4)
虽然没有办法解决核心数据模型的合并问题,但是我为核心数据模型文件创建了一个git diff驱动程序,它可以使事情变得更容易一些(有关如何设置它的说明,请参阅README)< / p>
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命令查看在other-branch中所做的更改,手动添加这些更改并进行审核:
git diff -- /path/to/model
一旦您满意,只需git-add模型文件,使其不再标记为未合并,并提交:
git add /path/to/model
git commit
答案 1 :(得分:3)
据我所知,目前还没有更好的方法,因为模型存储的格式不适合合并。通常情况下,我完全按照您的方式行事,让一个人一次处理模型以避免碰撞。
答案 2 :(得分:1)
一旦开始维护迁移映射模型,至少可以比较数据模型并查看更改。 在数据模型的SCM修订版中,相同的比较功能也会很好,并且可以使生活更轻松。