背景:git - 或任何其他SCM - 可以“成功”合并Storyboard,xib和pbxproj文件,因为它们只是xml。有时可以通过通常的冲突解决策略来解决冲突。但是xib和Storyboard是一些相当复杂的数据结构的序列化格式,所以开始有趣。
与其他源代码一样,成功合并并不能保证所有合并的更改一起正常工作。对于有问题的文件,git可以成功合并,但是当您尝试打开它时,Xcode有时会显示“无法读取存档”错误 - 即合并损坏了xib。
我见过关于让git忽略.xibs(不实用)的建议,或者在.gitattributes中通过设置
禁用diff的建议*.xib -crlf -diff
从技术上讲,它解决了合并冲突/损坏的xib问题 - 但现在有人的更改丢失了吗?
同样,我在项目文件中看到的最佳建议是.gitattributes中的merge = union:
*.pbxproj merge=union
问题:我搜索了很多,似乎没有一个好的解决方案。有经验的人能告诉我在一些用例中会发生什么吗?
在项目中,我将文件从x重命名为y,并删除fileA。同时,另一位程序员提交了更改以添加fileC并删除fileD。合并的结果是什么?我确信实际的文件系统更改是正确的,但在Xcode导航器面板中:
如果git忽略.xib文件 - 我是否至少会收到一个警告,指出文件已被更改且未被处理?
答案 0 :(得分:1)
这些天我不会为项目文件或笔尖设置任何特定的.gitattributes
。
将有并发更改合并到Xcode项目和xib / storyboard的问题存在于拥有多个开发人员的每个团队中。
处理Xcode项目冲突的一些技巧:
.xcconfig
个文件到configure your projects而不是构建设置部分。配置文件很容易合并。我最好的建议是,如果有疑问的话,可以采取合并的一方,放松并重播你的补充。
最近几个月,XIB(及其故事板)的格式发生了重大变化。我发现其他对象被附加到文件的内部集合中,并且可以轻松地进行合并。如果您要对同一个对象进行更改,则可能需要手动进入。
来自Itty Bitty Apps的This post强调了主要变化:
这种新的XIB XML格式的好处很多:
- XIB更小(代码行数更少)。
- 开发人员可以轻松读取XML并理解它在用户界面中指定的内容。
- 合并XIB现在不太可能导致破坏的XIB。在我们很少尝试合并XIB或故事板之前。