故事板和SVN冲突

这是一个问题,我们从来没有处理,直到故事板被介绍 – 每当有一个UI的冲突的机会,我们只是确保没有2个开发人员曾经在同一个XIB文件同时工作。 我们避免解决XIB冲突的原因是可能存在问题的副作用(XIB以XML格式表示,所以没有合并2个版本的“好”方法)。

现在我们正面临着这个问题,因为我们所有的用户界面元素都在同一个.storyboard文件中 – 防止项目中的任何2个用户界面元素同时工作,使得并行工作非常困难。

有关如何解决这个问题的任何build议? 感谢您的努力。

把你的故事板分成多个故事板。

您的应用没有理由只包含一个故事板。 把你的故事板分成模块故事板。 您可以使用+storyboardWithName:bundle:加载故事板模块。

请参阅: UIStoryboard最佳实践其他好的故事板的想法。


更新

重要的是要注意这不是一个完整的解决scheme。 以同样的方式,你不能完全避免在源代码中分解一个巨型类到更小的模块的合并冲突的可能性,你无法避免故事板合并冲突的可能性。 这个想法是减less可能性,直到它成为一个可pipe理的问题。

在一个庞大的代码库中总会有棘手的合并情况。 妥善分解的解决scheme将减less冲突次数,并最大限度地减less所需的locking数量。

这是我刚刚搞的一些东西,想find一个解决scheme。

如果在Xcode中右键单击Storyboard文件并导航到“Open As”,您将看到有多个选项 – 默认为“Interface Builder – iOS Storyboard”。 不过,您也可以select“源代码”。

如果在源代码模式下打开故事板,可以进行更改(虽然有点痛苦)。 但你可以从其他故事板添加代码,并在自己的改变 – 我没有使用SVN,但与一个Git存储库,我可以查看其他版本的故事板和复制代码。

我不会说这是一个很好的解决scheme – 当我尝试在IB中重新打开故事板时,Xcode随机崩溃时遇到了一些问题。 有时候在代码中粘贴代码,有时代码不会。 有几次我不得不改变<scene>标签的值。 根据我的经验,这是相当不错的,但是如果你在做任何事情之前备份你的文件,它可能会奏效。

如果确实有效,请告诉我 – 我有兴趣了解是否可以find解决scheme。

这是关于合并XML文件?

幸运的是,SVN允许你改变你用来合并不同types的文件的合并工具。 (例如使用P4Merge的教程 )

所以现在你只需要find一个合并XML文件的好工具(祝你好运:))

有WinMerge(使用DisplayXMLFiles预filter)或diffxml或XMLMerger或java xmlmerge工具

您还可以看看现代的源代码pipe理工具。 Git例如具有智能合并function。 看到这个链接为什么你应该考虑升级你的工作stream程。