objective-c - merge Xcode 项目文件

标签 objective-c xml xcode git version-control

merge 分支时(我用的是git),Xcode工程文件(Project.xcodeproj/project.pbxproj)经常会出现冲突。有时这很容易,但有时我最终会得到一个损坏的项目文件并且必须恢复。在最坏的情况下,我必须在第二次提交中通过拖入文件等方式手动修复项目文件(可以与之前的提交一起压缩)。

有没有人知道如何处理 Xcode 项目文件等大型复杂文件中的 merge 冲突?


编辑--一些相关问题:

Git and pbxproj

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/

最佳答案

  1. 将您的项目分解为更小、更符合逻辑的库/包。大型项目通常是糟糕设计的标志,例如做太多事情或太大的对象。

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

  3. 删除无关的构建阶段。示例:我已经从所有项目中删除了“Copy Headers”构建阶段。通过 include 指令明确包含特定文件。

  4. 尽可能使用 xcconfig 文件。这也减少了更新构建时必须进行的更改数量。 xcconfig 文件定义build设置的集合,并支持#include。当然,当您定义要使用的 xcconfig 时,您随后会从每个项目和目标中删除(大部分)用户定义的设置。

  5. 对于目标依赖项:创建执行逻辑操作而非物理操作的目标。这通常是一个 shell 脚本目标或聚合目标。例如:“构建依赖项”、“运行所有单元测试”、“构建所有”、“清除所有”。那么您不必在每一步都维护每个依赖项更改 - 这就像使用引用一样。

  6. 为您的代码定义一个通用的“源代码树”,为第 3 方源定义第二个。

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

至此,一个xcodeproj就简单多了。它将需要更少的更改,并且非常容易重建。您可以进一步利用这些概念来进一步降低项目和构建的复杂性。

关于objective-c - merge Xcode 项目文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4022362/

相关文章:

ios - 当 UITableViewCell 在两个单元格背景颜色之间设置动画时,为什么我不能点击它?

tableview 单元格内的 ios 文本字段

iPhone - 自动化测试?

c# - 从非嵌套 xml 反序列化为对象

ios - 有没有一种方法可以拖动 Segues 来使 Storyboard 看起来更漂亮?

swift - 3 个不同的按钮和 1 个按钮中的操作

objective-c - 显示警报 View 时,长按手势会被调用两次

javascript - SAPUI5 使用来自 XMII 的 OData 填充 SmartTable

python - Scrapy 创建 XML feed 将内容包装在 "value"标签中

ios - 如何调试 iOS 框架 dyld "lazy symbol binding failed"崩溃