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

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

【问题讨论】:

    标签: git version-control core-data


    【解决方案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 修订版中也非常有用,并且会让生活变得更轻松。

      【讨论】:

      • 谢谢马丁 - 我们会看看这个。
      猜你喜欢
      • 2017-09-05
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 2011-04-10
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多