一个高效解决冲突的Xcode利器

Posted iOS开发探索

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个高效解决冲突的Xcode利器相关的知识,希望对你有一定的参考价值。

痛苦的开端

近期手头上的项目是fork过来,经常需要merge上游的改动。由于上下游都有很多人同时在开发,因此每次merge都会有很多冲突,面对数十甚至数百个冲突,解决冲突是一件极其消耗脑细胞的事情。

解决冲突无外乎这几种方式:

  • 采用上游的改动

  • 采用本地的改动

  • 同时采用上游和本地的改动

  • 自定义的改动

对于前三种方式,很多IDE,例如Intelij IDEA,Visual Studio, android Studio都有协助工具:

唯独Xcode没有!!!Shame on you!

自己动手,丰衣足食

好在Xcode 8之后,开发者可以开发Xcode Source Editor Extension,可以获取及修改当前文件的内容。

You build extensions to the source editor in Xcode using XcodeKit. Source editor extensions can read and modify the contents of a source file, as well as read and modify the current text selection within the editor.

来看一个冲突的示例:

<<<<<<< HEAD
Your changes
=======
Their changes
>>>>>>> their_branch

实现起来也很简单,获取当前光标所在位置,如果被”<<<<<<< HEAD” 和 “>>>>>>>”所包围,即可识别为处于冲突区域。
插件提供三种选择:”Accept Theirs”, “Accept Yours”, “Keep Both”,对应上述常见冲突解决方案。针对不同选择,删除相应代码即可。

成品如下:

独乐乐不如众乐乐

代码已开源,https://github.com/liaojinxing/ConflictResolver
已实现功能:

  • 支持三个选项,’Accept Theirs’, ‘Accept Yours’, 和’Keep Both’,一键解决冲突,无需手动删除代码

  • 支持跳转到下一个冲突的地方

  • 支持 git diff3 style


点击“阅读原文”,查看开源代码。

以上是关于一个高效解决冲突的Xcode利器的主要内容,如果未能解决你的问题,请参考以下文章

iOS使用Xcode开发如何避免与解决冲突-不区分svn和git-100%保证你远离冲突

aven依赖分析,jar包冲突解决利器intellij idea插件Maven Helper强烈建议安装

XCode - iOS:无法解决 CocoaLibSpotify 和 Parse 框架之间的冲突

解决升级Xcode后插件失效问题

使用 Git 来管理 Xcode 中的代码片段

Xcode 4.6 的备份代码片段