合并Xcode项目文件

Fel*_*xyz 33 xml git version-control xcode objective-c

合并分支(我使用git)时,Xcode项目文件(Project.xcodeproj/project.pbxproj)中经常会发生冲突.有时它很容易,但有时我最终会得到一个损坏的项目文件并且必须还原.在最坏的情况下,我必须通过拖动文件等在第二次提交中手动修复项目文件(可以用之前的方式压扁).

有没有人有关于如何处理大型和复杂文件(如Xcode项目文件)中的合并冲突的提示?


编辑 -一些相关的问题:

Git和pbxproj

我应该使用merge = union将.pbxproj文件与git合并吗?

资源:

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/

jus*_*tin 8

  1. 将项目分解为更小,更逻辑的库/包.大规模的项目经常是糟糕设计的标志,比如太多或太大的对象.

  2. 设计易于重建 - 如果您编写的程序必须由多个工具或IDE构建,这也会有所帮助.我可以通过添加一个目录来重建我的许多"项目".

  3. 删除无关的构建阶段.示例:我已从所有项目中删除了"复制标题"构建阶段.通过include指令明确包含特定文件.

  4. 尽可能使用xcconfig文件.这也减少了更新构建时必须进行的更改次数.xcconfig文件定义了一组构建设置和支持#include.当然,在定义要使用的xcconfig时,然后从每个项目和目标中删除(大多数)用户定义的设置.

  5. 对于目标依赖项:创建执行逻辑操作的目标,而不是物理操作.这通常是shell脚本目标或聚合目标.例如:"build dependencies","run all units tests","build all","clean all".那么你不必每一步都保持每一个依赖变化 - 就像使用引用一样.

  6. 为您的代码定义一个通用的"源树",为第三方源定义第二个.

  7. 有外部构建工具可用.这可能是您的选择(至少对您的某些目标而言).

此时,xcodeproj将更加简单.它将需要更少的更改,并且非常容易重建.您可以进一步了解这些概念,以进一步降低项目和构建的复杂性.