我应该使用merge = union将.pbxproj文件与git合并吗?

时间:2010-04-28 11:50:38

标签: objective-c cocoa git merge

我想知道.gitattributes中的merge = union选项是否适用于.pbxproj文件。

此选项的联机帮助页面说明:

  

为文本文件运行3向文件级合并,但从两个版本中获取行,而不是留下冲突标记。这往往会以随机顺序在结果文件中保留添加的行,用户应该验证结果。

通常,对于将90%的文件添加到项目中的情况,这应该没问题。有人有这方面的经验吗?

2 个答案:

答案 0 :(得分:17)

不是直接体验,但是:

  • SO question确实建议再合并.pbxproj个文件。
  

pbxproj文件真的不是人类合法的   虽然它是纯ASCII文本,但它是JSON 的形式。基本上你想把它当作二进制文件。

(因此gitignore solution

实际上,Peter Hosey在评论中添加了:

  

这是 property list ,而不是JSON。相同的想法,不同的语法。

  

事实是,禁止合并.pbxproj文件比使用它更有害。
  .pbxproj文件是,只是JSON (类似于XML)。根据经验,您可能获得的唯一合并冲突就是两个人同时添加了文件。 99%的合并冲突案例中的解决方案是保持合并的双方。

所以合并'union'(带有gitattributes merge directive)是有道理的,但要做一些测试,看看它是否与上一个问题中提到的脚本完全相同。

答案 1 :(得分:10)

我最近一直在与一个大团队合作并尝试*.pbxproj merge=union,但最终不得不将其删除。

问题是大括号会定期变得不合适,这使得文件不可读。确实,大部分时间都可以工作 - 但可能会失败4次中的1次。

我们现在回到使用*.pbxproj -crlf -merge。这似乎是对我们来说可行的最佳解决方案。