一劳永逸解决Xcode项目文件合并“梦魇”

【备忘:https://zhuanlan.zhihu.com/p/19814677?columnSlug=geek-makes-life-better】


作者:SeganW
链接:https://zhuanlan.zhihu.com/p/19814677
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

xUnique

最近版本更新频繁,最新功能以README.rst为准

=======================

raw.github.com/truebit/


打开上面图片看gif动画

想必使用Xcode做ObjectiveC开发的同学都有这种经历:pull同事的代码后准备提交自己代码的时候,发现project.pbxproj文件冲突。嘟囔一声”我擦“,开始不情愿的文件人肉搜索>>>,<<<以及===并进行人肉替换。如果是一个很久没上传代码的同事刚刚提交过的话,你估计会找TA“聊聊人生”……

现在,有了xUnique,妈妈再也不用担心ObjectiveC的合并问题啦~

以下内容基本翻译自我写的README.rst

xUnique都做了什么

  • 替换所有UUID为项目内永久不变的MD5 digest
  • 删除所有多余的节点(一般是合并的时候疏忽导致的)
  • Python重写了我修改过的的sort-Xcode-project-file的排序功能,修改版相较原版增加了以下功能:
    • 对PBXFileReference和PBXBuildFile区块的排序
    • 使用脚本后如果内容没有变化不会生成新文件,避免一次不必要的commit

xUnique安装

$ pip install xUnique 

xUnique使用方法

  1. 把xUnique.py放到你的工程里面去,最好加到Git/SVN中
  2. 在命令行中把此脚本变成pre-commit的钩子,以Git为例;SVN不熟,自行搜索:
    $ { echo '#!/bin/sh'; echo 'python2 -mxUnique path/to/MyProject.xcodeproj'; } > .git/hooks/pre-commit
    
  3. 把pre-push的钩子变成可执行权限:
    $ chmod 555 .git/hooks/pre-commit
    
  4. 在项目所有分支执行此脚本,两种方法:
    • 通过触发钩子:因为是pre-commit,所以随便修改点东西,commit后,执行push操作之前会执行该脚本。(不使用pre-commit是为了怕污染commit,很方便的回滚)
    • 直接执行脚本:
      python2 -mxUnique path/to/MyProject.xcodeproj
      

说明

  • 目前支持以下经过测试的类型,其他子类型应该也支持,但是没有试验过,不敢保证:
    • PBXProject
    • XCConfigurationList
    • PBXNativeTarget
    • PBXTargetDependency
    • PBXContainerItemProxy
    • XCBuildConfiguration
    • PBXSourcesBuildPhase
    • PBXFrameworksBuildPhase
    • PBXResourcesBuildPhase
    • PBXFrameworksBuildPhase
    • PBXCopyFilesBuildPhase
    • PBXHeadersBuildPhase
    • PBXShellScriptBuildPhase
    • PBXBuildRule
    • PBXBuildFile
    • PBXReferenceProxy
    • PBXFileReference
    • PBXGroup
    • PBXVariantGroup
  • 项目中有一个人用了xUnique,所有人都要用,不然就乱套了。你懂的。
  • 因为我就只试验过一个普通工程文件和一个带有一个子工程的工程文件,其他类型都没试过,所有可能有问题。请大家发Issue或者提交Pull Request

如果觉得不错,请让更多人知道:)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值