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

Ort*_*ntz 20 git merge cocoa objective-c

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

该选项的联机帮助页:

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

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

Von*_*onC 18

不是直接经验,但是:

  • 这个SO问题确实建议再次合并.pbxproj文件.

pbxproj文件不是真正的人类可以合并.
虽然它是纯ASCII文本,但它是一个JSON的形式.基本上你想把它当作二进制文件.

(因此gitignore解决方案)

实际上,Peter Hosey在评论中补充道:

这是一个属性列表,而不是JSON.相同的想法,不同的语法.

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

因此合并'union'(带有gitattributesmerge指令)是有道理的,但要做一些测试,看它是否与上一个问题中提到的脚本做同样的事情.

  • 我们(一个3人团队)尝试了这个配置大约2个月并且工作正常,直到最近我们有一堆删除和添加文件.从那以后,pbxproj一直都失败了.因此,我们决定再次手动合并. (2认同)

Cor*_*oyd 11

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

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

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