问题背景
在一个Xcode项目内使用CocoaPods来集成各个模块,需要频繁改动所依赖的Pod组件。
在改动Pod组件时,常用的做法是先将Podfile中指向的Pod路径改为本地路径,修改完成之后再切回远端路径。
将Pod组件引入方式改为CocoaPoads结合Git Submodule的方式,可以避免频繁修改Podfile中的Pod路径。
CocoaPoads结合Git Submodule
优缺点
好处:
修改组件前,不需要在Podfile里切换本地路径
修改组件时,git可告知项目仓库的状态,避免遗忘提交组件的更改
修改组件后,不需要在Podfile里修改commit id,只需要通过git命令提交submodule的commit id,更自动化
方便查看代码的commit history和每行的作者信息,不用先切换本地路径
缺点:
拉取远程仓库时,需要多执行一条submodule更新命令,不过我们可通过执行下面的配置在执行git pull时自动更新子模块
设置子模块
- 将项目中新建一个目录,设置为git submodule,指向存放Pod组件源码
git submodule add [submodule_git_url] [submodule_dir_name]
git commit -am "..."
- 将Podfile中指向的Pod路径改为本地路径
子模块更新
- 首次更新时,先执行下列命令:
git pull
git submodule update --init
- 再执行下列命令配置,以后在执行git pull时自动更新子模块(git v2.14及其以后版本支持):
git config --global submodule.recurse true
- 以后再执行git pull会自动更新submodule。
如果不执行上面的配置,较繁琐的操作是:
- 首次更新:
git pull
git submodule update --init
- 之后更新:
git pull
git submodule update