我怎样才能明智地处理版本控制和核心数据模型?

Posted

技术标签:

【中文标题】我怎样才能明智地处理版本控制和核心数据模型?【英文标题】:How can I sanely approach version control and Core Data models? 【发布时间】:2010-06-30 18:47:04 【问题描述】:

当我们使用 git 将 Core Data 模型文件置于版本控制之下时,我们总是很难合并更改 - 我们发现避免手动合并更改的唯一可靠方法是在团队之间进行沟通当一个人进行必要的更改和推送时,阻止对模型的访问,然后是下一个人,等等。 当然有更好的方法来处理这个问题,但作为一个 git 新手,没有明显的解决方案浮现在脑海中。 有什么建议吗?

【问题讨论】:

【参考方案1】:

虽然无法解决核心数据模型的合并问题,但我为核心数据模型文件创建了一个 git diff 驱动程序,这应该会使事情变得更容易一些(有关如何设置它的说明,请参阅自述文件)

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-add 模型文件,使其不再标记为未合并,然后提交:

git add /path/to/model
git commit

【讨论】:

【参考方案2】:

据我所知,目前没有更明智的方法,因为模型以不适合合并的格式存储。通常我会按照你的方式做,一次让一个人处理模型以避免碰撞。

【讨论】:

谢谢马库斯。我们只需要在沟通方面更加自律!【参考方案3】:

一旦您开始维护迁移映射模型,至少您可以比较数据模型并查看更改。 相同的比较功能在数据模型的 SCM 修订版中也非常有用,并且会让生活变得更轻松。

【讨论】:

谢谢马丁 - 我们会看看这个。

以上是关于我怎样才能明智地处理版本控制和核心数据模型?的主要内容,如果未能解决你的问题,请参考以下文章

核心数据模型版本控制和数据迁移

在没有打开版本控制的情况下更改了核心数据模型

如何最好地处理核心数据+ iOS的状态恢复?

核心数据版本控制和迁移

使用 Magical Record 迁移核心数据失败并显示“已删除不兼容的模型版本”

核心数据模型版本控制,没有 xcdatamodeld 文件