这是一个在引入故事板之前我们从未需要处理的问题 - 每当 UI 中存在冲突的可能性时,我们只是确保没有 2 个开发人员同时处理同一个 XIB 文件。我们避免解决 XIB 冲突的原因是可能存在有问题的副作用(XIB 以 XML 格式表示,因此没有合并 2 个版本的“好”方法)。
现在我们面临这个问题,因为我们所有的 UI 元素都在同一个 .storyboard 文件中 - 防止项目中任何 2 个 UI 元素同时工作使得并行工作变得非常困难。
关于如何解决这个问题的任何建议?提前感谢您的努力。
这是一个在引入故事板之前我们从未需要处理的问题 - 每当 UI 中存在冲突的可能性时,我们只是确保没有 2 个开发人员同时处理同一个 XIB 文件。我们避免解决 XIB 冲突的原因是可能存在有问题的副作用(XIB 以 XML 格式表示,因此没有合并 2 个版本的“好”方法)。
现在我们面临这个问题,因为我们所有的 UI 元素都在同一个 .storyboard 文件中 - 防止项目中任何 2 个 UI 元素同时工作使得并行工作变得非常困难。
关于如何解决这个问题的任何建议?提前感谢您的努力。
将您的故事板分解为多个故事板。
您的应用没有理由只包含一个情节提要。将您的故事板分解为模块故事板。您可以使用+storyboardWithName:bundle:
加载情节提要模块。
请参阅:UIStoryboard 最佳实践以了解其他好的故事板创意。
更新
重要的是要注意这不是问题的完整解决方案。同样,您无法完全避免源代码将大类分解为较小模块时发生合并冲突的可能性,您也无法避免情节提要合并冲突的可能性。这个想法是减少可能性,直到它成为一个可管理的问题。
在大型代码库中总会出现棘手的合并情况。适当分解的解决方案将减少冲突的数量并最大限度地减少所需的锁定次数。
这是我在胡闹,试图找到解决方案时想到的。
如果您在 Xcode 中右键单击故事板文件并导航到“打开方式”,您会看到有多个选项 - 默认为“界面生成器 - iOS 故事板”。但是,您也可以选择“源代码”。
如果您以源代码模式打开故事板,则可以进行更改(尽管有点痛苦)。但是您可以从其他故事板添加代码并自己进行更改 - 我没有使用过 SVN,但使用 git 存储库我可以查看其他版本的故事板并复制代码。
我不会说这是一个很好的解决方案——当我尝试在 IB 中重新打开情节提要时,Xcode 随机崩溃时遇到了一些麻烦。有时将代码粘贴到作品中,有时则不然。有几次我不得不更改<scene>
标签的值。以我的经验,这是非常偶然的,但如果你在尝试任何事情之前备份你的文件,它可能会起作用。
如果它确实有效,请告诉我 - 我很想看看是否可以找到解决这个问题的方法。
这是关于合并 XML 文件吗?
幸运的是,SVN 允许您更改用于执行不同类型文件合并的合并工具。(例如使用 P4Merge 的教程)
所以现在你只需要找到一个合并 XML 文件的好工具(祝你好运:))
有 WinMerge(带有 DisplayXMLFiles 预过滤器)、diffxml、XMLMerger或java xmlmerge 工具
您还可以查看现代源代码管理工具。例如,Git 具有智能合并功能。请参阅此链接,了解您应该考虑升级工作流程的原因。