如何理智地处理版本控制和Core Data模型?

8
当我们使用git进行版本控制时,将Core Data模型文件放置其中,我们总是在合并更改方面遇到困难——我们找到的唯一可靠的方法是在一个人进行必要的更改和推送之前,通过团队间的沟通来阻止对模型的访问,然后是下一个人,以此类推。当然,肯定有更好的处理方式,但作为一个git新手,我没有想到明显的解决方案。你有什么建议吗?
3个回答

4
虽然核心数据模型合并问题无法避免,但我为核心数据模型文件创建了一个 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命令查看在other-branch中所做的更改,手动添加这些更改并进行审核。
git diff -- /path/to/model

一旦你满意了,只需git-add模型文件,以便不再标记为未合并状态,然后提交:

git add /path/to/model
git commit

3
据我所见,目前没有更为合理的方法,因为该模型存储在一种不利于合并的格式中。通常情况下,我会采取与您相同的做法,即每次只让一个人处理模型,以避免冲突。

1
谢谢马库斯。我们只需要更加严格地控制我们的沟通! - Carl Veazey

1
一旦开始维护迁移映射模型,至少可以比较数据模型并查看更改。 同样的比较功能也在SCM数据模型版本中非常有用,可以使生活更轻松。

谢谢Martin - 我们会看一看这个。 - Carl Veazey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接