【发布时间】:2010-09-06 19:28:09
【问题描述】:
我知道 .xcdatamodel 实际上是一个包含两个文件(elements 和 layout)的目录。
我知道这两个文件是二进制 plist,并且可以使用 plutil -convert xml1 将它们转换为 XML plist(虽然依赖这可能是“不明智的”,但它非常适合开发:我希望构建工具能够编译/优化/无论何时将它们放在设备上,并假设 Xcode 不会失去读取旧文件的能力,我总是可以将它们转换回 binary1)。
我的两个问题:
- Xcode 会修改 both 文件,如果您移动一个实体(我原以为只是更改
layout),这对多个开发人员完全没有帮助。 - 似乎没有简单的方法来合并更改(即使 XML plist 格式是 NSKeyedArchiver 序列化的对象图,所以文本合并不起作用)。
- 似乎没有简单的方法来查看发生了什么变化(也许我可以将它们都转换为 XML 并进行比较……呃)。
有没有人找到解决这些问题的方法?我可以强制 Xcode 保存为 XML plist,或者强制 Subversion 在提交时将它们转换为 XML plist?差异甚至模糊合理吗?是否有执行 .xcdatamodel 差异的外部工具?
编辑:基于 SCM 的锁定并不能真正解决问题,只是说“我要编辑 X”;危险在于有人忘记锁定、进行更改、更新,然后一切都会中断。 svn:needs-lock 属性应该可以工作,但不幸的是 Xcode 不尊重 chmod -w on elements 或 layout (不可写的 .xcdatamodel 也不起作用,即使 Xcode 显示锁定图标,并且 svn 也失败了)。
【问题讨论】: