merge 分支时(我用的是git),Xcode工程文件(Project.xcodeproj/project.pbxproj)经常会出现冲突。有时这很容易,但有时我最终会得到一个损坏的项目文件并且必须恢复。在最坏的情况下,我必须在第二次提交中通过拖入文件等方式手动修复项目文件(可以与之前的提交一起压缩)。
有没有人知道如何处理 Xcode 项目文件等大型复杂文件中的 merge 冲突?
编辑--一些相关问题:
Should I merge .pbxproj files with git using merge=union?
资源:
http://www.alphaworks.ibm.com/tech/xmldiffmerge
http://www2.informatik.hu-berlin.de/~obecker/XSLT/#merge
http://tdm.berlios.de/3dm/doc/thesis.pdf
http://www.cs.hut.fi/~ctl/3dm/
http://el4j.svn.sourceforge.net/viewvc/el4j/trunk/el4j/framework/modules/xml_merge/
最佳答案
将您的项目分解为更小、更符合逻辑的库/包。大型项目通常是糟糕设计的标志,例如做太多事情或太大的对象。
为轻松重建而设计 -- 如果您编写的程序必须由多个工具或 IDE 构建,这也会有所帮助。我的许多“项目”都可以通过添加一个目录来重建。
删除无关的构建阶段。示例:我已经从所有项目中删除了“Copy Headers”构建阶段。通过 include 指令明确包含特定文件。
尽可能使用 xcconfig 文件。这也减少了更新构建时必须进行的更改数量。 xcconfig 文件定义build设置的集合,并支持
#include
。当然,当您定义要使用的 xcconfig 时,您随后会从每个项目和目标中删除(大部分)用户定义的设置。对于目标依赖项:创建执行逻辑操作而非物理操作的目标。这通常是一个 shell 脚本目标或聚合目标。例如:“构建依赖项”、“运行所有单元测试”、“构建所有”、“清除所有”。那么您不必在每一步都维护每个依赖项更改 - 这就像使用引用一样。
为您的代码定义一个通用的“源代码树”,为第 3 方源定义第二个。
有可用的外部构建工具。这可能是您的一个选择(至少对于您的某些目标而言)。
至此,一个xcodeproj就简单多了。它将需要更少的更改,并且非常容易重建。您可以进一步利用这些概念来进一步降低项目和构建的复杂性。
关于objective-c - merge Xcode 项目文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4022362/