FileMerge .nib文件类型无法合并

Mik*_*ike 15 macos filemerge nib

我想合并两个.nib文件.FileMerge显示两个文件的比较没有问题.我试图将所有设置保存在一个文件中(即右侧),除了我要从另一个文件(即左侧)复制的两个设置.差异只是一行代码,每行代码都会更改autoresizingMask键的整数值.所以合并起来应该不难.我会使用TextEdit,如果它允许我打开.nib文件.

但是我收到错误"此文件类型无法合并".我尝试使用.nib扩展名的FileMerge>首选项>过滤器设置,如本网站上发布的类似问题的答案所述,但没有运气.据我所知,显示设置应保留为.dib的"已过滤",因为未经过滤,它不可读,我尝试切换应用选择.我假设使用的实际过滤器本身不应该被更改或修改?

是否有任何常见的原因导致FileMerge在比较窗口中显示没有问题的两个.nib文件无法合并?

谢谢

Kor*_*nel 5

XIB 可以合并。在简单的情况下(如文本更改、元素大小调整),它既安全又简单,最新的 XIB 版本可以承受更复杂的合并(Apple 一直在升级格式,现在它具有合理的可读性,并且不再使用数字 ID合并容易出错。)

问题在于 FileMerge 具有硬编码的内置配置,可以通过 ibtool 漂亮打印过滤 XIB 文件,这使得它们不能合并。

// 编辑:看起来 Apple 已经添加了对可执行文件完整性的验证,因此修补解决方案不再起作用。“停止使用 FileMerge”是现在的解决方案。

一些技巧:

  • 在 FileMerge 首选项中启用“压缩空格”选项。

  • 当差异完全混乱并且 XIB 文件似乎完全不同时,它们可能是格式的不同版本。在合并之前(在没有合并冲突标记的原始文件上)在每个 XIB 文件上运行这个:

    ibtool --write foo.xib --upgrade foo.xib
    
    Run Code Online (Sandbox Code Playgroud)

这会将 XIB 文件转换为最新的 Xcode 版本,因此两者将具有相同的结构。


Joe*_*orn 4

NIB 和 XIB 文件无法合并,无论它多么诱人。使用 FileMerge 查看差异可能很有用,但仅使用此信息来告知您在 Interface Builder 中手动重新创建哪些更改。

此外,FileMerge 不显示 NIB 文件的实际文本差异,而是显示 ibtool 的输出。您可以通过删除 FileMerge 首选项中的 NIB 条目来查看实际的文本差异,但在 FileMerge 启动之间不会保存此设置。