gpt4 book ai didi

iphone - 如何在Xcode中使用svn合并冲突(文件project.pbxproj)?

转载 作者:行者123 更新时间:2023-12-03 18:09:25 28 4
gpt4 key购买 nike

我们的团队有两名成员。我们使用Xcode的SCM(使用SVN)来管理我们的源代码文件。
我们都将文件添加到我们的 Xcode 项目中。他已经致力于SVN服务器。当我更新时,Xcode 发现 project.pbxproj 文件存在冲突。然后我选择退出 Xcode 并手动合并冲突。然后我开始编辑我的 project.pbxproj,合并我们的更改。实际上我不知道 Xcode 如何管理文件,我只是添加了一些我的 project.pbxproj 文件没有的文本。当我完成后,我的项目无法打开。我猜这是因为 project.pbxproj 文件无法手动编辑。

所以,我想知道,当你发现这个问题时,project.pbxproj文件有冲突,如何解决?

谢谢!

最佳答案

我使用 git,但我们看到同样的问题 - 如果两个人添加文件,就会出现合并冲突。

通常编辑很容易。只需使用文本编辑器进入 project.pbxproj 文件,然后查找合并冲突部分 - 通常这由类似以下内容标记:

>>>>>>>
Stuff 1
======
Stuff 2
<<<<<<<<

在 99% 的 Xcode 项目合并冲突情况下,您只是想接受合并的双方(因为两个人添加了不同的文件) - 所以您只需删除合并标记,在上面的情况下,最终会像这样:

Stuff 1
Stuff 2

就像我说的,这在大多数情况下都很有效。如果完成后 Xcode 无法读取项目文件,只需获取最新的未合并版本并再次手动添加文件即可。

2023 年后续

这个建议仍然基本成立,但最近我一直在开发一个非常大且旧的应用程序,其中包含复杂的 Xcode 项目文件,并且几个团队成员经常进行大量添加。

手动检查合并冲突仍然是主要方法。多人添加新文件通常仍然与使用合并冲突的双方一样简单。

仍然存在简单的后备方案,即简单地获取您尝试合并到分支中的项目文件,并使用存在冲突的 Xcode 项目的副本来手动添加回您的更改。

尽管我发现有一些情况可能会带来挑战,但在解决方案极其不明显的情况下......

首先,有时,多个人处理同名的文件可能会导致多个完整的文件具有不同的标识符。对于此问题,请在文件所在的组中查找文件 ID,然后选择要保留的文件 ID 和要丢弃的文件 ID。

第二个是,在项目中的相似位置引入新组可能会导致组 split 的冲突。在这些情况下,您可能需要将合并一侧的内容完全移出合并冲突区域,并将其与项目文件中的其他组一起正确引入。

最后一个是促使我更新此答案的非显而易见的解决方案。也就是说,有时您可能会遇到冲突,所有 CoreData 版本的条目都具有完全不同的标识符。例如,如果两个团队同时提高了模型版本,则可能会发生这种情况。

在这种情况下,您似乎可以只使用这些标识符来选择一方或另一方。这有时有效。

但是在某些情况下,如果我这样做,在加载项目时我将根本看不到任何模型版本 - Xcode 将它们全部删除。

解决方案再次是,保留合并的两侧,这意味着核心数据模型有两个条目!如果您这样做,会发生什么情况,Xcode 在加载项目时,将为所有模型选择有效的标识符并保存一个正确的版本,而不是允许两者都存在。

对于使用 CoreData 并同时进行多个版本更新的大型团队,我们发现一项有助于顺利解决问题的技术是建立一个单独的分支来进行 CoreData 模型更改。这样,所有团队都将尽快使用具有相同当前模型标识符和内部 Xcode 项目 ID 的相同 CoreData 版本。该分支仅包含 CoreData 模型本身,而不包含与模型相关的任何类(尽管可以)。

关于iphone - 如何在Xcode中使用svn合并冲突(文件project.pbxproj)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2004135/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com